特定の文字列/正規表現値を持つすべてのファイルを検索しようとしています。では、名前に「hello」を含むすべてのファイルを検索するにはどうすればよいですか?状況をより複雑にするために、名前が2文字で始まり、その後にダッシュと数字が続くファイルをどのように見つけますか?
私はfindコマンドを試しましたが、それがhelloのケースに役立ちました。入力が必要find <dir> *hello*
ですが、正規表現の値では機能しません。
入力するとfind -E <dir> -regex '^[a-z]{2}-[1-9]'
何も起こりません。と入力してもfind -E <dir> -regex '*[0-9]*'
何も起こりません。
誰でもこの問題を解決するのに役立ちますか?事前にありがとう
ベストアンサー1
-regex
フルファイルパス(名前だけでなく)と一致し、デフォルトで(暗黙的^
に)$
アンカーを一致させます。
ここでは正規表現は必要なく、-name
ワイルドカードパターンを使用し、パスの代わりにファイル名と一致する基準を使用できます。
find . -name '*hello*' -name '[[:alpha:]][[:alpha:]]-[1-9]*'
2文字、ハイフン、1から9の間の数字で始まり、「hello」を含むファイル名の場合。
正規表現を使用すると(この場合はFreeBSD / OS / X)、find
これは次のようになります。
find -E . -regex '.*hello[^/]*' -regex '.*/[[:alpha:]]{2}-[1-9][^/]*'
[^/]*
たとえば、反対方向の代わりにこの値が必要で、.*
一致します。./aa-9/hello/foo/bar
とにかく、find <dir> *hello*
それはあなたが思うようになりません。シェルは、*hello*
このglobを名前に "hello"を含む現在のディレクトリの非表示のファイルまたはディレクトリのリストに展開し、結果を追加の引数として渡しますfind
。