すべてのディレクトリをどのようにリストしますか?いいえ指定されたファイル名を持つファイルはありますか?たとえば、このツリーが与えられた場合
/
/a
README
file001
file002
/b
README
file001
/c
file003
これを行うディレクトリを一覧表示したいと思います。いいえというファイルがありますREADME
が、この場合はディレクトリになります/c
。どうすればいいですか?find
たとえば、構文を考えることはできません。
ベストアンサー1
find
GNUなどの実装がパラメータの挿入を許可すると仮定するfind
と、次のようになります。{}
-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