用於列印所選目錄中 *.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在透過管道傳輸其輸出後立即為其提供了選項一樣。否則,請新增此開關。

相關內容