フルパスを返す間、デフォルト名がパターンと一致するファイルを探します。

フルパスを返す間、デフォルト名がパターンと一致するファイルを探します。

find結果を正規表現と一致させる必要があります。ファイルは次のとおりです。

/path/1/file1.001.txt
/path/1/file2.001.txt
/path/1/file1.001
/path/2/file3.002.txt
/path/2/pure_file3.002.txt

など。

xxx.txtwhere is 3桁の数字で終わるすべてのディレクトリ内のすべてのファイルを一致させる必要があり、xxx前に単語が含まれていないファイル名のみを一致させる必要がありますpure_。また、フルパスを返す必要があります。

次のファイルを除くすべての操作を実行しましたpure_

find /path/ -mindepth 1 -maxdepth 2 -type f | grep -P '.*\.[0-9]{3}.txt' 

私は試した:

find /path/ -mindepth 1 -maxdepth 2 -type f | grep -P '.+(?!pure).*\.[0-9]{3}.txt' 

しかし、私が言うなら/path/1/

ls -1 | grep -P '^(?!pure).*\.[0-9]{3}.txt'

一方、次のファイルは正しく除外されます。

ls -1 | grep -P '(?!pure).*\.[0-9]{3}.txt'

確かに。

それで、それはおそらく始まらないフルパスでどのように一致させるかによって異なりますpure_。私は正規表現を十分に理解していません。

ベストアンサー1

find正規表現一致なし:

find /path -type f ! -name 'pure_*' -name '*[0-9][0-9][0-9].txt'

/path名前は3pure_桁の数字と.txt

おすすめ記事