選択したディレクトリの* .pdfファイル数を印刷するコマンド

選択したディレクトリの* .pdfファイル数を印刷するコマンド

私は現在Linuxコンピュータを使用していません。次のコマンドを実行すると、私が望む結果が出ますか?

ls | grep ".pdf" | wc

答え1

foo.pdfaいいえ、「.pdf」にはなどの意味が多すぎますbpdf

また、誤って一致するファイルがない場合でも、入力の行数wc、単語数、バイト数を出力するオプションがないため、関心のある数字よりも2つ多くの数字が得られます。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

シェルは以下をフィルタリングできる必要があります。

ls *.pdf | wc -l

または、ファイル名の末尾が一致することを確認する必要があります。

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

(ドル記号を参照)。

注:これら2つも一致します。目次「.pdf」(ある場合)で終わります。

注2:出力をパイピングした直後にオプションを提供したlsように動作する必要があります。-1それ以外の場合は、このスイッチを追加してください。

関連情報