删除匹配模式的文件

删除匹配模式的文件

我需要递归删除所有子目录中的所有文件,其中文件名包含一个数字,后跟一个“x”,后跟一个数字,至少两次。

例子:

我想删除这些文件:

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

但我不想删除这些文件:

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

我该怎么做(从 bash shell)

答案1

一个字符串包含“一个数字后跟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 {} +

答案2

正确的命令是:

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

这将仅获取名称为“aaa-12x12.jpg”的文件,但不会获取“aaa-12x12red.jpg”

相关内容