ls -Rが特定のパターンのファイルを繰り返しリストしないのはなぜですか?

ls -Rが特定のパターンのファイルを繰り返しリストしないのはなぜですか?

ls -R私の質問は、ls *.pdfたとえばPDFファイルを再帰的に見つけるためにこれら2つの機能を1つにまとめるのはどうですか?もちろん他のものもあります。気になりました。ありがとう.pdflsls -R \*.pdffind

ベストアンサー1

シェルは、これを現在の作業ディレクトリ内のすべての.pdfファイルに展開し、*.pdfこれを実行するためにサブディレクトリ内のすべての.pdfファイルを表示するために使用するコマンドとは無関係であるため、以下を有効にする必要があります。 shell(in)オプションを使用すると、現在の作業ディレクトリだけでなく、すべてのサブディレクトリで次のように検索または拡張できます。ls*.pdfbashglobstar***.pdf

shopt -s globstar; ls -d -- **/*.pdf

また、を使用すると、ls -R \*.pdfリテラルに一致する単一のファイルを検索します。*.pdfここでは、ファイルが実際にディレクトリでない限り、サブディレクトリを見つけることはでき-Rません。サブディレクトリを再帰的に一覧表示*.pdfするためにのみ使用されます。この組み合わせを使用して.pdfファイルをフィルタリングできlsますgrep

ls -bR |grep '\.pdf$'

ただし、これはファイルのみを報告し、同じ終了パターンを持つディレクトリも報告することを保証しません。

まあ、あなたが言って知っているように、最良の方法はfindコマンドを使用することです。

find . -type f -name '*.pdf'

おすすめ記事