Кажется, самый простой способ 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.
- Я подозреваю, что на самом деле вам может понадобиться число файлов для каждого подкаталога.