このパターンに一致するすべてのファイルを見つける(または、より具体的にはカウントする)必要があります。
*/foo/*。doc
最初のワイルドカードのアスタリスクには、可変数のサブディレクトリが含まれます。
Gnu findを使用すると、正規表現を使用できます(-name
)パス全体に一致:
find . -regex '.*/foo/[^/]*.doc'
ファイルの数だけを数えるには:
find . -regex '.*/foo/[^/]*.doc' -printf '%i\n' | wc -l
(%i
フォーマットコードにより、find
はファイル名の代わりにiノード番号を出力します。ファイル名とは異なり、inode番号には改行のような文字がないことが保証されているため、カウントの信頼性が高くなります。提案してくれた@tripleeeに感謝します。)
ただし、それがOSXで機能するかどうかはわかりません。
どうですか:
find BASE_OF_SEARCH/*/foo -name \*.doc -type f | wc -l
これがしていること:
この方法の利点:
更新:可変深度が必要ですか? OK:
find BASE_OF_SEARCH -name \*.doc -type f | grep foo | wc -l
オプションで、ファイル名に「foo」が含まれる結果を除外することもできます。これにより、結果も表示されるためです。
他のページのこのページの回答に基づいて、以下をまとめることができました。現在のフォルダーとその下のすべてで、拡張子がpdfであり、その後に続くすべてのファイルで検索が実行されますタイトルにtest_textを含むもののフィルタリング。
find . -name "*.pdf" | grep test_text | wc -l
未テストですが、試してください:
find . -type d -name foo -print | while read d; do echo "$d/*.doc" ; done | wc -l
すべての「foo」ディレクトリを(さまざまな深さで)検索します(これがシンボリックリンクを無視するのは、それが問題の一部である場合は追加できます)。 Shell Globbingを使用して、すべての「.doc」ファイルを検索し、それらをカウントします。