Для подсчета количества файлов в папке, я использую:
ls -l | wc -l
но это дает еще 1, чем:
ls | wc -l
Что вызывает это? Также, что делает эти три числа представляют для
ls | wc
Когда Вы используете ls -l
, Вы не только получаете список всех файлов в указанном каталоге, один файл на строку, но Вы также добираетесь total [BLOCKS]
строка наверху, которая отображается, сколько блоков файловой системы все файлы в этой папке занимают всего. Больше информации об этой строке может быть найдено в , Что то, что “total” в самой первой строке после ls-l? на Переполнении стека.
, Чтобы просто получить одну строку на файл (и наоборот) Вы могли использовать ls -1
вместо этого, который не добавляет дополнительную информацию.
От wc
страница справочника:
Print newline, word, and byte counts for each FILE
Так первое число в wc
вывод является количеством строк, второй является количеством слов (" , слово А является non-zero-length последовательностью символов, разграниченных пробелом. "), и последнее число является входным размером в байтах.
можно прочитать страницы справочника (страницы руководства) большинства команд путем ввода man COMMAND
в терминале, например, man ls
или man wc
.
См. эта ссылка о том, почему попытка обработать (анализирует) вывод ls
, опасно.
Вместо этого получите количество ссылок на каталог (см. man stat
), вычтите 2 (для .
и ..
записи).
dir=$PWD
Nfiles=$(( $(stat --printf=%h $dir) - 2 ))
Примечание: это считает файлы И каталоги в $dir
. Подсчет двух отдельно является другой проблемой.