Linux(この場合はUbuntu)のホームフォルダで、特定の正規表現に一致するすべてのファイルを見つけたいと思います。これを行うために使用できる単純なUnixコマンドはありますか?
たとえば、私のホームフォルダで、名前に次の正規表現に一致するすべてのファイルを見つけたいと思います(ここではJavascriptスタイルの表記法を使用)。((R|r)eading(T|t)est(D|d)ata)
ベストアンサー1
検索-name
オプションはファイルグロービングをサポートします。また、制限された角かっこ式などの制限された正規表現類似オプションのセットもサポートしていますが、実際の正規表現の一致のためには-regex
。
マッチングをお探しの場合コンテンツgrep -r
Craigが提案したように使用されるファイルです。
ファイル名を一致させるには、対応する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
機能します。