Кажется, самый простой способ - find /path/to/search -ls | wc -l
Find используется для обхода всех файлов и папок.
-ls
перечислить (распечатать) все имена. Это значение по умолчанию, и если вы его опустите, оно все равно будет работать практически на всех системах. (Почти, так как некоторые могут иметь разные значения по умолчанию). Это - хорошая привычка явно использовать это все же.
Если вы просто используете часть find /path/to/search -ls
она распечатает все файлы и каталоги на вашем экране.
wc
это количество слов. Опция -l
говорит ему, чтобы подсчитать количество строк.
Вы можете использовать его несколькими способами, например,
- тестовый файл
- кошачий тестовый файл | Туалет
Первый вариант позволяет wc открыть файл и подсчитать количество строк, слов и символов в этом файле. Второй вариант делает то же самое, но без имени файла он читает из стандартного ввода.
Вы можете комбинировать команды с каналом |
, Выход из первой команды будет передан на вход второй команды. Таким образом find /path/to/search -ls | wc -l
использует find для вывода списка всех файлов и каталогов и передает вывод в wc. Wc подсчитывает количество строк.
(Другой альтернативой был бы `ls | wc ', но найти гораздо более гибкий и хороший инструмент для изучения.)
[Изменить после комментария]
Возможно, было бы полезно объединить find и exec.
Например, find / -type d ! \( -path proc -o -path dev -o -path .snap \) -maxdepth 1 -exec echo starting a find to count to files in in {} \;
Перечислите все каталоги в /, за исключением тех, которые вы не хотите искать. Мы можем вызвать предыдущую команду для каждого из них, получая сумму файлов на папку в /.
Тем не мение:
- Это использует расширение GNU -maxdepth.
Он будет работать на Linux, но не на любом unix-a-alike.
- Я подозреваю, что на самом деле вам может понадобиться число файлов для каждого подкаталога.