しないすべてのディレクトリを一覧表示するにはどうすればよいですか。 中に特定のファイル名のファイルがありますか?例えばこの木を与えられた
/
/a
README
file001
file002
/b
README
file001
/c
file003
しないディレクトリを一覧表示したい README
という名前のファイルがあります 、この場合はディレクトリ/c
になります 。どうすればいいですか?たとえば、を使用した構文は考えられません。 find
。
承認された回答:
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
参考資料
- 特定のファイル名を含まないディレクトリを検索で除外しますか?