web-dev-qa-db-ja.com

指定した文字列で始まるファイル名を持つすべてのファイルを検索しますか?

約100000個のファイルが含まれるディレクトリがあり、指定された文字列で始まるすべてのファイルに対して何らかの機能を実行します。

私が試してみました

ls mystring*

しかし、これはbashエラー「Too many arguments」で戻ります。私の次の計画は

find ./mystring* -type f

しかし、これには同じ問題があります。

コードは次のように見える必要があります

for FILE in `find ./mystring* -type f`
do
    #Some function on the file
done

事前に感謝、リック

127
RikSaunderson

つかいます

find . -name 'mystring*'
231
ls | grep "^a"  

は、文字aで始まるすべてのファイルを提供し、現在のディレクトリでのみ機能しますが、findはデフォルトでサブディレクトリにドリルダウンします。

私はそれが良いと言っているわけではありません-ちょうど別の角度。

22
jacanterbury

検索をファイルのみに制限する場合は、検索で-type fを使用することを検討する必要があります。

大文字と小文字を区別しない検索には-inameも使用してみてください

例:

find /path -iname 'yourstring*' -type f

パイプ記号やxargsを使用せずに、結果に対していくつかの操作を実行することもできます

例:

ファイルを検索し、サイズをMBで表示します

find /path -iname 'yourstring*' -type f -exec du -sm {} \;
3
matson kepson