Find
列出不包含文件的目錄
我見過與此類似的問題,但找不到與文件直接相關的內容。
有沒有辦法給我一個不包含特定文件的目錄列表?
例子:
/dir1/good /dir1/stuff /dir2/junk /dir2/morejunk /dir3/good /dir4/junk
我想執行一個查找命令,我只返回不包含文件“好”(dir2 和 dir4)的目錄名稱。有什麼方法可以使用 find 或其組合來做到這一點?我現在可以做到這一點的唯一方法是對文件“good”執行查找,保存該輸出並使用一些 awk、sort 和 comm -3 命令來獲得我需要的差異。
有沒有更簡單的方法來做到這一點?
您可以使用
-exec test ...
檢查目錄中是否存在好的文件,例如find /path/to/search -type d \! -exec test -e '{}/good' \; -print
您可以使用 find 和GNU parallel輕鬆做到這一點:
$ file=foo && find . -type d | parallel -j+0 "[ -f {}/$file ] || echo $file not in {}"
該命令通過將目前目錄下的每個目錄並行輸入來工作。Parallel 然後啟動並行作業以檢查每個目錄中的文件 foo,如果該文件在目錄中不存在,則列印一條消息。