我需要递归删除所有子目录中的所有文件,其中文件名包含一个数字,后跟一个“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”