учитывая следующую структуру:
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». Каталоги обычно имеют как минимум две жесткие ссылки; их. запись вторая. Если у них есть подкаталоги, у каждого из них также есть жесткая ссылка, называемая .. на свой родительский каталог. . и .. записи каталога обычно не ищутся, если они не упомянуты в командной строке 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, это будет эффективным ...)
- Будет ли это работать на любой файловой системе?
-links 2
трюк. Это не сработаетbtrfs
.