【发布时间】:2013-04-24 22:24:47
【问题描述】:
这有点复杂,但我想使用 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 脚本自己进行递归,但对于大型目录树来说,这并不是最有效的方法。
【问题讨论】: