这有点复杂,但我想使用 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 时,搜索应该不要继续下去。
如果排除了目录,或者可以以这种方式限制的类似命令,有没有办法防止 find 下降得更深?目前,我正在使用自定义 shell 脚本自己进行递归,但这对于大型目录树来说并不是最有效的方法。