Как получить "wc-l" для печати только количества строк без имени файла?

wc -l file.txt

выводит количество строк и имени файла.

мне нужен только сам номер (не имя файла).

Я могу это сделать

 wc -l file.txt | awk '{print }'

но, может быть, есть лучший способ?

7 ответов


попробуйте так:

wc -l < file.txt

cat file.txt | wc -l

по данным man page (для версии BSD у меня нет версии GNU для проверки):

если файлы не указаны, используется стандартный ввод и файл отсутствует имя отображается. Приглашение будет принимать ввод до получения EOF или [^D] в большинство сред.


как о

wc -l file.txt | cut -d' ' -f1

т. е. труба на выходе wc на cut (где разделителями являются пробелы и выбрать только первое поле)


чтобы сделать это без ведущего пространства, почему бы и нет:

wc -l < file.txt | bc

как о

grep -ch "^" file.txt

очевидно, есть много решений для этого. Хотя вот еще один:

wc -l somefile | tr -d "[:alpha:][:blank:][:punct:]"

это выводит только количество строк, но завершающий символ новой строки (\n) присутствует, если вы этого тоже не хотите, замените [:blank:] С [:space:].


лучшим способом было бы в первую очередь найти все файлы в каталоге, а затем использовать AWK NR (количество записей переменной)

ниже есть команды :

find <directory path>  -type f | awk  'END{print NR}'

пример:find /tmp/ -type f | awk 'END{print NR}'