У меня нет подсказки, как «просто» получить количество папок, у которых нет подпапок. Я нашел что-то с -printf "%h\n"
в find
, но, я не уверен, для чего это.Количество папок, у которых нет подпапок
ответ
Для определения папки в текущей директории, которые не обладают подпапки (не считая скрытых из них):
find . -maxdepth 1 -type d -execdir bash -c 'shopt -s nullglob; a=("$1"/*/); ((${#a[@]}==0)); exit $?' _ {} \; -print
Taking скрытые из них во внимание (но не
.
и..
конечно):find . -maxdepth 1 -type d -execdir bash -c 'shopt -s nullglob dotglob; a=("$1"/*/); ((${#a[@]}==0)); exit $?' _ {} \; -print
Если вы хотите рекурсию в папки (т.е. ALS o определить подпапки с этим свойством), просто удалите часть команды -maxdepth 1
.
Есть и другие способы, конечно: 100% чистый удар, или, смешнее, используя find
внутри find
, как так:
find . -maxdepth 1 -type d \! -execdir sh -c 'find "$1" -mindepth 1 -type d -print -quit | read a' _ {} \; -print
Обратите внимание, что эти методы являются 100% относительно имен файлов, содержащих забавные символы (пробелы, новые линии, ведущие/конечные пробелы и новые строки и т. д.).
Чтобы иметь (разновидность) комплексный ответ, я хотел бы добавить следующий замечательный метод. Он указал Thor в this comment of the OP, и относится к Ben Jackson «s answer in another similar question, что я цитирую (с адаптацией) ниже:
[Если файловая система поддерживает жесткие ссылки] есть гораздо более простое решение, которое использует в тот факт, что родительский каталог ссылается на
..
из каждого подкаталога, увеличит количество ссылок в каталоге на 1. В каталоге без подкаталогов есть ссылка с номером 2 (.
и ссылка со своего собственного родителя по его названию). Таким образом, каталог, без подкаталогов имеет счетчик ссылок 2 и могут быть найдены с помощью следующей команды:find . -type d -links 2
Это не законно, чтобы сделать другие жесткие ссылки на каталог, так что не должно быть никаких ложных срабатываний.
+1 отличное использование 'nullglob' – anubhava
- 1. словарь папок и подпапок
- 2. Классы, у которых нет интерфейсов
- 3. Идентифицировать папки, у которых нет файлов с определенной строкой
- 4. Число подпапок в каталоге папок
- 5. Перечень папок/подпапок с RecursiveDirectoryIterator
- 6. Список всех папок и подпапок
- 7. подсчитывает количество записей, которых нет в таблице
- 8. Максимальное количество папок Windows Server
- 9. Запросить все темы, у которых нет детей
- 10. Как разобрать кортежи, у которых нет разделителей?
- 11. Изящно обрабатывайте амбраты, у которых нет данных
- 12. Выбор проектов, у которых нет файла LICENSE
- 13. Фильтрация событий, у которых нет маркера
- 14. Guice: параметры привязки, у которых нет аннотации
- 15. Как скопировать любую структуру папок без подпапок
- 16. Переименование папок, файлов и подпапок в bash
- 17. Нужна помощь для включения папок и подпапок
- 18. Выберите количество записей, у которых есть отношения, у которых есть свои условия отношений?
- 19. Получить список всех папок и подпапок Outlook
- 20. Android список всех ftp-папок и подпапок
- 21. htaccess перенаправление подпапок в структуре папок
- 22. Outlook 2010 Создание папок и подпапок
- 23. Как создать определенное дерево папок/подпапок?
- 24. MVC4 Маршрутизация с именами папок и подпапок
- 25. Как отобразить красивое дерево папок и подпапок?
- 26. MySQL - Получите количество пользователей, у которых есть «пользовательский контакт»
- 27. Powershell script показать количество подпапок
- 28. найти все словари, у которых есть неопределенное количество определенных ключей
- 29. Как читать UILabel через UIButtons (у которых нет текста)
- 30. Почему + = работает на std :: map keys, у которых нет значений?
Здесь много помощи: http://stackoverflow.com/q/18886367 –
И здесь: http://stackoverflow.com/q/14912513. Интересно, что люди хотят найти папки с * двумя * подпапками. Достаточно просто изменить этот код для нулевых подпапок. –
Огромное вам спасибо :) – Tempus