このfind
ユーティリティは強力ですが、いくつかの追加機能が必要です。
その-regex
検索では、各ファイル名(またはdirname)を文字列として扱い、指定された正規表現を名前の先頭にのみ適用します。pythonのようなre.match(..)
。一致しない場合、検出されません。
たとえば、「ログ」を含むファイルを検索する場合(ファイル名に正規表現なしの「ログ」が含まれるファイルを検索する簡単な方法があることは知っていますが、これは単なる例です)
$ find -regex 'log'
(nothing)
$ find -regex '\./.*log.*$'
./log9
./log7
./log5
./log0
./log2
./log4
./log6
./log8
./log3
./log1
そう、作る方法があるfind
との-regex
ことで、ファイル名、等に正規表現を使用していますgrep
か、Pythonのre.search(..)
文字列の先頭にいないだけで、それが一致することができますどこにでもどこに- ?
.*
あるいは^./
regexsのみ文字列の先頭に試されていない場合は不要だろう正規表現の開始時に。 )-name
はグロブ専用です..なので、唯一の解決策は、より長い正規表現を書くことです。