Command finds some, misses some


 
Thread Tools Search this Thread
Top Forums UNIX for Beginners Questions & Answers Command finds some, misses some
# 1  
Old 04-03-2019
Command finds some, misses some

The contents of my home directory:


bin Desktop Documents Downloads folders Music Pictures Public Templates Videos

When I run the command
Code:
for file in /home/myself/*d*; do if [ -x "$file" ]; then echo $file; fi; done

it finds
Code:
 /home/myself/Downloads 
 /home/myself/Videos

but not "folders".




Ubuntu 18.04.2; Xfce 4.12.3; kernel 4.15.0-45-generic; bash 4.4.19(1); Dell Inspiron-518
# 2  
Old 04-03-2019
man test yields:
Code:
       -x FILE
              FILE exists and execute (or search) permission is granted

Is folders a directory?
What are its permissions?

Last edited by vgersh99; 04-03-2019 at 12:49 PM..
This User Gave Thanks to vgersh99 For This Post:
# 3  
Old 04-03-2019
permissions fixed it! thanks!


edit: it is not a folder; I was just experimenting

Last edited by Xubuntu56; 04-03-2019 at 12:47 PM.. Reason: answered question
# 4  
Old 04-03-2019
Be very careful with using this because if there are filesname with spaces, tabs or other non-printing characters, it might break again.

You might be better to use find instead:-
Code:
find . -name "*d*" -print

I'm sure that this isn't all you want to do, but spaces in filenames (or other things) can cause problems. What is the overall requirement?




Kind regards,
Robin
This User Gave Thanks to rbatte1 For This Post:
# 5  
Old 04-03-2019
Folders would be seen as files with execute perms, so the question is more are those "folder" true folders or files, because files dont necessarily need execution perms, but it gets more tricky when talking of subdirectories: not giving them x means you cannot traverse them...
This User Gave Thanks to vbe For This Post:
# 6  
Old 04-04-2019
EDIT: fixed it. Putting -maxdepth before -name works!

@rbattel

When I run
Code:
find . -name "*d*" -print

several hundred files are found, as it delved into subdirectories (not my intent)

but when I try
Code:
find . -name -maxdepth 1 "*d*" -print

I get
Code:
find: paths must precede expression: `1'


Last edited by Xubuntu56; 04-04-2019 at 09:06 AM.. Reason: fixed problem
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Finds all duplicate files

Hi, How would you write bash script that given a directory as an argument and finds all duplicate files (with same contents - by using bytewise comparison) there and prints their names? (6 Replies)
Discussion started by: elior
6 Replies

2. Shell Programming and Scripting

I want my script to NOT to send an e-mail if it finds the same keyword more than twice.

My script triggers and e-mail if keywords supplied to it were found. Problem is if it find the same keyword continously (due to continous server errors), it triggers mails and fillup my mail box with same message (which is not required) I want my script to NOT to send an e-mail if it finds the... (13 Replies)
Discussion started by: Rajeshneemkar
13 Replies

3. Shell Programming and Scripting

sed finds nothing but it changes file's timestamp

I must go through some files to change a certain string within text files to another string. I use openSUSE and folders are mounted by cifs. Text to be replaced (only in .m extension) is U:\FOLDER and new string is N: That works fine with spaces in directory names etc., but this process ... (5 Replies)
Discussion started by: Pappa41
5 Replies

4. UNIX for Dummies Questions & Answers

find -size -7M finds files, but won't cp them all

If I run: find /somefolder -type f -size -7M | wc -l I get 73594 files But when I run find /somefolder -type f -size -7M -exec /bin/cp -v {} /someotherfolder/ \; it only copies 38891 of the files to the folder, why? There's a mix of all types of files in /somefolder. Is there some other... (12 Replies)
Discussion started by: unclecameron
12 Replies

5. Shell Programming and Scripting

combine multiple finds into 1-liner

How to combine 3 find statements into 1-liner? find statements: cd ${dir1} ; find . ! -name . -prune -type f | xargs file | grep -i ascii | cut -f1 -d: | xargs grep -l "${searchtxt}" cd ${dir2} ; find . ! -name . -prune -type f | xargs file | grep -i ascii | cut -f1 -d: | xargs grep -l... (4 Replies)
Discussion started by: ux4me
4 Replies

6. Shell Programming and Scripting

Sometimes my until loop misses it's target

Hello all, I wrote a quick function (alarm) in my bash_profile (in cygwin) for practice. It uses until loops to wait for a specified time, and once that time passes triggers a play on a mp3. Most of the time it works, however sometimes it seems like it's looping through too slowly and will miss... (1 Reply)
Discussion started by: DeCoTwc
1 Replies

7. UNIX for Dummies Questions & Answers

very urgent..need of a script which finds a file without the use of find command..hlp

im a beginner in shell scripting and i need a script which will find a file in a given path without the use of find or grep command.......i need some kind of code.....plzzz plzzzz help me......ive tried n searched every where but i couldn't find the solution for my particular problem..... (4 Replies)
Discussion started by: mishi
4 Replies

8. Shell Programming and Scripting

Read from text file misses first line

Hi! I need to read in the first line from a text file (which will only ever have one line in it), so I tried this.... while read line do echo $line done < $file But this wasn't returning anything. So I tired a different file, which had multiple lines of text in it, and it returned... (2 Replies)
Discussion started by: davewg
2 Replies

9. News, Links, Events and Announcements

SETI Finds Stolen Laptop

The SETI@home project invites volunteers to install special software of their home computers. This software, called BOINC, runs computational jobs when the computer would otherwise be idle. And the software needs to contact the main server periodically to deliver results and obtain new problems.... (2 Replies)
Discussion started by: Perderabo
2 Replies

10. UNIX for Dummies Questions & Answers

PS finds a ghost?

Hello, I have problems executing a script in ksh with this script named process.sh: ps -ef | grep process.sh | grep -v grep | wc -l | read a if then echo "The script is running" exit 0 fiThe problem is that when I execute the script, sometimes it shows the message "The script is... (10 Replies)
Discussion started by: jguirao
10 Replies
Login or Register to Ask a Question