
私は現在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
それ以外の場合は、このスイッチを追加してください。