用于打印所选目录中 *.pdf 文件数量的命令

用于打印所选目录中 *.pdf 文件数量的命令

我目前不在 Linux 机器上。以下命令会产生我想要的结果吗?

ls | grep ".pdf" | wc

答案1

不,“.pdf”的含义太多了,例如foo.pdfabpdf

此外,即使您没有错误匹配的文件,wc没有选项也会输出输入中的行数、单词数和字节数,因此您会得到比您感兴趣的多两个数字。如果您想要grep混合,您可以可以ls | grep -E "\.pdf$" | wc -l,但除非您在该目录中有很多 pdf 文件,否则不需要 grep,否则您可以使用ls *.pdf | wc -l.

后来我想通了之后补充道:

另外,grep可以进行计数,因此如果grep在混合中,只需将-c选项添加到 grep 而不是通过管道将输出传递到wc -l,所以ls | grep -cE "\.pdf$"或者如果您想避免计数名为<something.pdf>:的目录ls -l | grep -cE "^-.*\.pdf$"

答案2

你应该使用

ls | grep ".pdf" | wc -l

-l参数将仅计算结果行数,如果没有该参数,-l您还会获得其他计数,例如换行符、单词和字节数。请注意,这将计算包含“.pdf”字符链的文件名(以及文件夹)。

要仅计算以 结尾的文件.pdf,您最好使用find

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

答案3

您的 shell 应该能够进行过滤:

ls *.pdf | wc -l

或者您必须确保匹配文件名的结尾:

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

(注意美元符号)。

注意:这两个也将匹配目录以“.pdf”结尾(如果有)。

注 2:ls应该表现得就像您-1在通过管道传输其输出后立即为其提供了选项一样。否则,请添加此开关。

相关内容