次の構造を考えると:
oz123@debian:~/ $ tree .
.
├── a
│ ├── a1
│ ├── a2
│ └── a3
├── a1
│ ├── a11
│ ├── a12
│ └── a31
├── b
│ └── b1
│ ├── b11
│ │ └── b21
│ │ └── b31
│ ├── b12
│ └── b3
└── c
16 directories, 0 files
すべてのエンドノードを見つける方法は?
次の解決策が見つかりました。〜らしい大丈夫です。ただし、どのテストケースも失敗しないことを証明する必要があります。
ステータスヘルプページ-links
:
「-links」を使用して、特定の数のリンクを含むファイルを検索することもできます。ディレクトリには通常、複数のハードリンクがあります。項目は2番目の項目です。サブディレクトリがある場合、各サブディレクトリには親ディレクトリへの..というハードリンクもあります。これ。および..ディレクトリエントリは通常、findコマンドラインに記載されていない限り検索されません。
考えられる解決策:
oz123@debian:~/ $ find . -type d -links 2
./a/a2
./a/a3
./a/a1
./c
./a1/a31
./a1/a11
./a1/a12
./b/b1/b12
./b/b1/b3
./b/b1/b11/b21/b31
- 誰でもより良いソリューションを提供できますか(既に優れたパイプとsedを使用せずに...)
- すべてのファイルシステムで動作しますか?
ベストアンサー1
より明確なオプションがあります-empty
。
find . -type d -empty
直す。まあ、あなたは正しいです。この方法はディレクトリ内のファイルには機能しません。
したがって、固定ファイルシステムの信頼できないバージョンは次のとおりです。
find dtest/ -type d -exec sh -c "if [ \$(find {} -maxdepth 1 -type d | wc -l) -eq 1 ]; then echo {} ; fi" \;