現在、Linux マシンを使用していません。次のコマンドで希望する結果が得られますか?
ls | grep ".pdf" | wc
答え1
いいえ、「.pdf」は一致しすぎています。例:foo.pdfa
および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
(ドル記号に注意してください)。
注: これらは両方とも一致しますディレクトリ存在する場合、「.pdf」で終わるファイル。
注 2:出力をパイプするとすぐに、ls
オプションを指定した場合と同じように動作するはずです。それ以外の場合は、このスイッチを追加します。-1