Команда для печати количества файлов * .pdf в выбранном каталоге

В настоящее время я не на Linux-машине. Выпустила бы следующую команду для моего желаемого результата?

ls | grep ".pdf" | wc

Нет, «.pdf» слишком много, например, foo.pdfa и bpdf .

Кроме того, даже если у вас нет неверных файлов, wc без опций выводит количество строк, слов и байтов на вход, так что вы получите два числа больше, чем вам интересно. Если вы хотите, чтобы grep в миксе , вы можете сделать ls | grep -E "\.pdf$" | wc -l ls | grep -E "\.pdf$" | wc -l ls | grep -E "\.pdf$" | wc -l , но если у вас нет большого количества pdf-файлов в этом каталоге, grep не нужен, вы можете обойтись с помощью ls *.pdf | wc -l ls *.pdf | wc -l .

Добавлено позже, когда я об этом подумал:

Кроме того, grep может делать подсчет так, что если grep находится в миксе, просто добавьте параметр -c в grep вместо того, чтобы передать вывод в wc -l , поэтому ls | grep -cE "\.pdf$" ls | grep -cE "\.pdf$" или если вы хотите избежать подсчета каталогов с именем <something.pdf> : ls -l | grep -cE "^-.*\.pdf$" ls -l | grep -cE "^-.*\.pdf$" .

Ваша оболочка должна иметь возможность выполнять фильтрацию:

 ls *.pdf | wc -l 

или вы должны убедиться, что вы соответствуете концам имен файлов:

 ls | grep "*\.pdf$" | wc -l 

(обратите внимание на знак доллара).

Примечание: оба они также будут соответствовать каталогам, заканчивающимся на «.pdf», если они есть.

Примечание 2: ls должен вести себя так, как если бы вы дали ему вариант -1 как только вы пропустили его вывод. В противном случае добавьте этот переключатель.

Вы должны использовать

 ls | grep ".pdf" | wc -l 

Параметр -l будет считать только количество приведенных строк, в то время как без -l вы также получите другие подсчеты, такие как количество строк в новой строке, слова и байта. Обратите внимание, что это будет считаться именами файлов (и папок), которые содержат цепочку символов «.pdf».

Чтобы подсчитать только файлы, заканчивающиеся на .pdf , вам лучше использовать find :

 find . -type f -name "*.pdf" | wc -l