biorąc pod uwagę następującą strukturę:
oz123@debian:~/ $ tree .
.
├── a
│ ├── a1
│ ├── a2
│ └── a3
├── a1
│ ├── a11
│ ├── a12
│ └── a31
├── b
│ └── b1
│ ├── b11
│ │ └── b21
│ │ └── b31
│ ├── b12
│ └── b3
└── c
16 directories, 0 files
Jak znaleźć wszystkie węzły końcowe?
Znalazłem następujące rozwiązania, które wydają się dobre, ale muszę udowodnić, że nie ma przypadku testowego, który by go zawiódł.
Strona pomocy -links
stanów:
Możesz także wyszukiwać pliki, które mają określoną liczbę linków, za pomocą „-links”. Katalogi zwykle mają co najmniej dwa twarde linki; ich . wejście jest drugie. Jeśli mają podkatalogi, każdy z nich ma również stałe łącze o nazwie .. do swojego katalogu nadrzędnego. The. i .. pozycje katalogu zwykle nie są przeszukiwane, chyba że są wymienione w wierszu polecenia find.
możliwe rozwiązanie:
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
- Czy ktoś może zapewnić lepsze rozwiązanie (bez użycia rur i sed, to musi być wydajne ...)
- Czy będzie działać na dowolnym systemie plików?
-links 2
sztuczka. To nie zadziałabtrfs
.