ファイル名に正規表現の一致を含むフォルダ内のすべてのファイルを検索するには?

ファイル名に正規表現の一致を含むフォルダ内のすべてのファイルを検索するには?

Linux(この場合はUbuntu)のホームフォルダで、特定の正規表現に一致するすべてのファイルを見つけたいと思います。これを行うために使用できる単純なUnixコマンドはありますか?

たとえば、私のホームフォルダで、名前に次の正規表現に一致するすべてのファイルを見つけたいと思います(ここではJavascriptスタイルの表記法を使用)。((R|r)eading(T|t)est(D|d)ata)

ベストアンサー1

検索-nameオプションはファイルグロービングをサポートします。また、制限された角かっこ式などの制限された正規表現類似オプションのセットもサポートしていますが、実際の正規表現の一致のためには-regex

マッチングをお探しの場合コンテンツgrep -rCraigが提案したように使用されるファイルです。

ファイル名を一致させるには、対応するfindオプション-regexを使用します。

find . -type f -regex '.*[Rr]eading[Tt]est[Dd]ata.*' -print

find括弧内の原子は正規表現ではサポートされていないため、正規表現の変換に注意してください。 Linuxシステムを使用している場合、GNU findは-regextypeより多くの制御機能を提供するオプションをサポートします。

find . -regextype posix-extended -regex '.*((R|r)eading(T|t)est(D|d)ata).*' -print

探しているのが大文字と小文字の一致だけなら、それだけ-iregex-iname十分かもしれません。 Gillesのglobstarソリューションは、シェルとして使用してもbash機能します。

おすすめ記事