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