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


148

およそ10万のファイルを含むディレクトリがあり、指定した文字列で始まるすべてのファイルに対して何らかの機能を実行したいのですが、これは何万ものファイルに一致する可能性があります。

私が試してみました

ls mystring*

しかし、これはbashエラー「Too many arguments」で返されます。私の次の計画は使用することでした

find ./mystring* -type f

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

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

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

forループの代わりに、にパイプする必要findがありwhileます。
追って通知があるまで一時停止。

回答:


277

使用する

find . -name 'mystring*'

10
そして、いくつかの関数 "find。-name 'mystring *' -exec [command]"を実行するには、例えば "find。-name 'mystring *' -exec rm {} \;"を削除します。
Eldar

2
ここで、{}はファイル名のプレースホルダーです:
Sergio Tulentsev

1
これは文字列を含むすべての結果返すようですか?The
Brian Z

7
...またはfind . -iname 'mystring*'大文字と小文字を区別しない検索。
フランクノッケ2017年

OPは、挿入して、単一のディレクトリを参照する-maxdepth 1前に、-name現在のフォルダに検索を制限する
jacanterbury

27
ls | grep "^abc"  

サブストリングで始まる(OPが特に必要とするものである)すべてのファイルを提供しますabc
現在のディレクトリでのみ動作し、findサブフォルダに再帰的に動作します。

文字列で始まるfindファイルのみに使用するには、

見つける。-name 'abc' *


4

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

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

例:

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

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

例:

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

find /path -iname 'yourstring*' -type f -exec du -sm {} \;
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.