I am trying to use shell to find all sub-directories in any directory. What I would want is to have a .sh file (shell script file) that can receive as a parameter the name of the directory I'm interested in and the list of files I want to find (NOTE: I want only sub-directories that have all these files).
I know I can use this:
find $D -perm -u=rx -type f
Where D is the directory, -u is the user, r is the users right to read and x is the right to modify I believe, but uhm I have no idea how to make the file accept parameters and I have no idea how to use -u=rx
EDIT: I now understand how to use parameters for a shell script file, so that's ok. I still don't get most of the rest.
I would love it if someone could either explain the code I mentioned or … give an alternative ?
I'm also ok with a partial answer, I just need some help.
Best Answer
If I understand correctly what you want to do, this is the solution:
What it does is this:
The use
find ... -type d
to find all subdirectories (including the directory given as first parameter). Thetest -e
command checks if a file exists. So for a given directory we have to check all the files given in the command line: test -e /path/to/directory/file1 test -e /path/to/directory/file2 test -e /path/to/directory/file3 ... The/path/to/directory
is{}
- a single result of find. Then the find-parameter-exec
can be used to check for a single file. To check for all files several-exec test
parameters are needed. So while loop build a list of there parameters, then this list is put together in a single command and evaluated.Have fun ...