这有点复杂,但我想使用find命令搜索项目(文件,目录等)并运行命令以确定是否要通过-exec参数包含它们,但是,我需要阻止find下降到已被排除的目录。
例如:
find . -exec sh -c 'echo "{}" | grep -i ".*/[a][^/]*"' \;
一个奇怪的例子,但基本上上面应该只匹配以字母a开头的项目,但是如果你运行它然后即使它不匹配以其他字母开头的目录,find仍然会进入它们如果该目录包含以字母a开头的项目,则返回结果。例如,它将匹配以下内容:
./aFolder/aFile
./Foo/Bar/aFile
./aFolder/Foo/Bar/aFile
我想要做的是防止这种情况发生,这样如果一个目录不匹配,那么它的内容也会被忽略,在最后一个例子中,./ aFolder会被匹配,但是当遇到./Foo时搜索不应继续进入。
如果排除某个目录,还是有一种方法可以阻止查找更深入地下降,或者是否可以以这种方式限制类似的命令?目前我正在使用自定义shell脚本自己进行递归,但对于大型目录树来说,这不是最有效的方法。
答案 0 :(得分:1)
我认为这可以满足您的需求:
find . \( -name . -or -exec sh -c 'echo "{}" | grep -iq "^.*/[a][^/]*\$"' \; -or \( -prune -false \) \) -print
你的一些改变