У меня вопрос к count
и рекурсивное отображение number
из sub-directories
, включая скрытые (invisible sub-directories
). Я могу отображать подкаталоги рекурсивно, но меня смущают невидимые подкаталоги. Кроме того, я могу использовать только команды ls
и wc
для решения. Пожалуйста, не предлагайте команду 'find'
. Мне нужно использовать только команды ls
и wc
.
До сих пор я пробовал следующие команды.
ls -1 | wc -l
ls -R | wc -l
ls -R | wc -c
ls -aR | wc -l
ls -aR | wc -c
Но все же я не нашел решения. Пожалуйста, просветите меня.
Используйте:
ls -lAR | grep '^d' | wc -l
Но вы должны иметь в виду: никогда не анализировать выходные данные ls
! В этом случае лучше использовать find
, как в этот ответ .
См. Также man ls
, чтобы понять, почему я использовал опции -l
, -A
и -R
.
По моему опыту find
является лучшим инструментом для поиска файлов или каталогов - особенно рекурсивно и с включением точечных имен файлов.
find -mindepth 1 -type d | wc -l
Вы можете немного оптимизировать, если вы будете писать и считать только отдельные символы для каждого совпадения:
expr $(find -mindepth 1 -type d -printf 1 | wc -c) - 1
Если вы хотите включить рабочий результат в результат, установите -mindepth
в 0 (или опустить его).
Я просто перечитал вопросы и заметил, что он не хочет использовать find.
Я нашел два, которые, кажется, оба дают правильный ответ:
Первый:
ls -lR | grep ^d | wc -l
Второй:
ls -Rp | grep "/$" | wc -l