我正在使用find -type f
命令递归地查找某个起始目录中的所有文件。但是,我希望阻止某些目录输入和提取其中的文件名称。所以基本上我正在寻找类似的东西:
find . -type f ! -name "avoid_this_directory_please"
有没有一个有效的替代方案?
答案1
该选项的用途如下-prune
:
find . -type d -name 'avoid_this_directory_please' -prune -o \
-type f -print
您可以将上面的内容解释为“如果有一个名为 的目录avoid_this_directory_please
,则不要输入它,否则,如果它是常规文件,则打印其路径名。”
您还可以根据任何其他条件修剪目录,例如顶级搜索路径中的完整路径名:
find . -type d -path './some/dir/avoid_this_directory_please' -prune -o \
-type f -print
答案2
要避免使用目录,请尝试 -path 测试:
find . -type f ! -path '*/avoid_this_directory_please/*'
答案3
从man find
,在该-path
部分中,显然结合了其他 2 个答案
To ignore a whole directory tree, use -prune rather than
checking every file in the tree. For example, to skip the directory
`src/emacs' and all files and directories under it, and print the
names of the other files found, do something like this:
find . -path ./src/emacs -prune -o -print
答案4
尝试这个
find -name "*.js" -not -path "./directory/*"