Количество файлов в папке, дает различные результаты

Для подсчета количества файлов в папке, я использую:

ls -l | wc -l

но это дает еще 1, чем:

ls | wc -l

Что вызывает это? Также, что делает эти три числа представляют для

ls | wc

3
задан 3 August 2016 в 18:15

2 ответа

Когда Вы используете 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.

8
ответ дан 1 December 2019 в 13:03

См. эта ссылка о том, почему попытка обработать (анализирует) вывод ls, опасно.

Вместо этого получите количество ссылок на каталог (см. man stat), вычтите 2 (для . и .. записи).

dir=$PWD
Nfiles=$(( $(stat --printf=%h $dir) - 2 ))

Примечание: это считает файлы И каталоги в $dir. Подсчет двух отдельно является другой проблемой.

4
ответ дан 1 December 2019 в 13:03

Другие вопросы по тегам:

Похожие вопросы: