Using find to list all files under certain directory

26,467

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.

Share:
26,467

Related videos on Youtube

Alex
Author by

Alex

Updated on September 18, 2022

Comments

  • Alex
    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:

    1. 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 a bin 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
    
    1. find ~ -type d -name "bin" -exec ls -f '{}' ';'

    I read that doing ls -f will list only files, but this unfortunately also lists the directories bin, .. and .

    So how can I do this?