Using find to list all files under certain directory
Solution 1
With -path
, you could try:
find ~ -path '*/bin/*' -type f
This won't list bin
itself, so to get both:
find ~ \( -path '*/bin/*' -type f \) -o \( -name bin -type d \)
Solution 2
You can do this with nested find
calls:
$ find ~ -type d -name bin -exec find '{}' -type f ';'
Since I'm replacing an ls
call, perhaps you did not want more than one level of listing in the second find
call. In that case, add -maxdepth 1
after -type f
above.
Related videos on Youtube
Alex
Updated on September 18, 2022Comments
-
Alex almost 2 years
I'm trying to use a single line command that will find every directory (or sub-directory) named
bin
and will then print a list of all the files under it, but will not also list the directory names under them.I've tried a couple different things to accomplish this, but so far none have worked:
find ~ -type d -name "bin" -exec ls '{}' ';' | grep -v /
I tested this and it will list the files, but it also list directories under whatever bin is there. So if I have a
bin
sub-directory under abin
directory that looks like this:~/home/ ~/home/bin file1.txt ~/home/bin/bin file2.txt
The output looks something like this:
bin file1.txt file2.txt
find ~ -type d -name "bin" -exec ls -f '{}' ';'
I read that doing
ls -f
will list only files, but this unfortunately also lists the directoriesbin
,..
and.
So how can I do this?