Files

列出所有沒有給定文件名的文件的目錄

  • March 7, 2022

我將如何列出所有沒有給定文件名的文件的目錄?例如給定這棵樹

/
 /a
    README
    file001
    file002
 /b
    README
    file001
 /c
    file003

我想列出沒有名為的文件的目錄README,在本例中為 directory /c。我該怎麼做?我想不出任何使用 eg 的語法find

假設find像 GNUfind這樣的實現接受{}嵌入到的參數中-exec

$ find . -type d \! -exec test -e '{}/README' \; -print

或者,沒有問題的嵌入:

$ find . -type d ! -exec sh -c 'test -e "$1"/README' sh {} \; -print

例子

這裡目錄 1/1 到 5/5 有一個 README,其他目錄是空的。

$ tree 
.
|-- 1
|   `-- 1
|       `-- README
|-- 10
|   `-- 10
|-- 2
|   `-- 2
|       `-- README
|-- 3
|   `-- 3
|       `-- README
|-- 4
|   `-- 4
|       `-- README
|-- 5
|   `-- 5
|       `-- README
|-- 6
|   `-- 6
|-- 7
|   `-- 7
|-- 8
|   `-- 8
`-- 9
   `-- 9

現在,當我們執行這個版本的find命令時:

$ find . -type d \! -exec test -e '{}/README' \; -print
.
./10
./10/10
./7
./7/7
./9
./9/9
./6
./6/6
./5
./8
./8/8
./4
./1
./3
./2

參考

引用自:https://unix.stackexchange.com/questions/85448