web-dev-qa-db-ja.com

パターンに一致するファイルを削除する

ファイル名に「x」と数字が続く数字が少なくとも2回含まれているすべてのサブディレクトリ内のすべてのファイルを再帰的に削除する必要があります。

例:

これらのファイルを削除したいと思います。

'aaa-12x123-123x12.jpg'
'aaa-12x12-123x12-12x123.jpg'

しかし、私はこれらのファイルを削除したくありません:

'aaa.jpg'
'aaa-12x12.jpg'
'aaaxaaa-123x123.jpg'
'aaaxaaa-aaaxaaa.jpg'

どうすればよいですか(bashシェルから)

33
mikkelbreum

文字列には、数字の後にxの後に数字が続く場合、つまり、数字にxの後に数字が続く場合、つまり、パターン[0-9]x[0-9]。したがって、名前がパターン*[0-9]x[0-9]*[0-9]x[0-9]*.jpgに一致するファイルを削除しようとしています。

find /path/to/directory -type f -name '*[0-9]x[0-9]*[0-9]x[0-9]*.jpg' -delete

find-deleteがない場合は、rmを呼び出してファイルを削除します。

find /path/to/directory -type f -name '*[0-9]x[0-9]*[0-9]x[0-9]*.jpg' -exec rm {} +

正しいコマンドは次のとおりです。

find . -type f -iregex '.*[0-9]x[0-9]*\.jpg$'

これは、「aaa-12x12.jpg」という名前のファイルのみを取得し、「aaa-12x12red.jpg」は取得しません。

0
MasterR