我目前不在 Linux 機器上。以下命令會產生我想要的結果嗎?
ls | grep ".pdf" | wc
答案1
不,「.pdf」的意思太多了,例如foo.pdfa
和bpdf
。
此外,即使您沒有錯誤匹配的文件,沒有選項也會輸出輸入中的行數、單字數和位元組數,因此您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
在透過管道傳輸其輸出後立即為其提供了選項一樣。否則,請新增此開關。