Я пытаюсь определить псевдоним для группы команд, которые подсчитывают рекурсивно и отображают количество всех подкаталогов, обнаруженных для любого рабочего каталога (в том числе с невидимыми именами файлов). Пока что я сделал:
ls -R | wc -l
Но он не отображает номер скрытых файлов. Поэтому я попробовал эту команду:
ls -l | grep ^d | wc -l
Но я не уверен, что это правильная команда или нет?
Вы не должны никогда анализировать выходные данные ls
. См. Некоторые объяснения здесь:
Как и другие рекомендованные, используйте find
вместо. И лучший способ (даже если у вас есть имена каталогов, содержащие символы новой строки или другие типы пробелов):
alias countdir='find . -type d -print0 | tr -dc "\\0" | wc -c'
См. man find
, man tr
, man wc
для получения дополнительной информации.
Я бы порекомендовал использовать find
( man page ) для поиска. Например,
find . -maxdepth 1 -type d | wc -l
напечатает номер всех каталогов в текущем рабочем каталоге.
Опция -maxdepth
определяет, как далеко find
опустится в каталоги. При значении 1
он будет просто использовать текущий каталог и перечислять свои подкаталоги. С помощью 2
он также выведет список подкаталогов подкаталогов и т. Д.
У этого есть только один маленький недостаток: find
включает в свой список .
(текущий рабочий каталог), поэтому число, возвращаемое wc -l
, будет отключено на единицу.