0
这有点复杂,但我想使用find命令来搜索项目(文件,目录等)并运行命令以确定它们是否包含或不通过-exec参数,但是,我需要防止查找降序到已被排除的目录。防止unix找到下降到不匹配的目录
例如:
find . -exec sh -c 'echo "{}" | grep -i ".*/[a][^/]*"' \;
位一个奇怪的例子,但基本上上面应该只匹配以字母开始一个项目,但是如果你运行它,那么即使它不符合目录,从其他字母开始,如果该目录包含以字母a开头的项目,find将仍然会进入它们并返回结果。例如,它会匹配以下内容:
./aFolder/aFile
./Foo/Bar/aFile
./aFolder/Foo/Bar/aFile
我想这样做是防止这种情况发生,这样,如果一个目录没有那么匹配它的内容会被忽略,在最后一个例子。/aFolder会匹配,但遇到./Foo时,搜索不应继续进行。
如果一个目录被排除在外,还是有类似的命令可以用这种方式进行限制,有没有一种方法可以防止找到更深的下降?目前,我正在使用自定义shell脚本来自己完成递归,但它并不是实现大型目录树最有效的方法。
嗯,我不知道这是工作正常,因为它似乎仍然下降到目录。下面是我正在运行的确切命令:'find。 \(-exec sh -c'[$(stat -qf“%i”“'”$ PREVIOUS“'/ {}”)!= $(stat -qf“%i”“'”$ TARGET“'/ }“)];退出$?'\; - 或者(--prune -false \)\)-print'。基本上它是检查当前文件的inode是否与先前目录中的inode不同,但它仍然下降。 – Haravikk 2013-05-01 14:59:58