我需要递归删除所有子目录中的所有文件,其中文件名包含一个数字,后跟一个“ x”,然后一个数字,至少两次。
例:
我想删除这些文件:
'aaa-12x123-123x12.jpg'
'aaa-12x12-123x12-12x123.jpg'
但我不想删除这些文件:
'aaa.jpg'
'aaa-12x12.jpg'
'aaaxaaa-123x123.jpg'
'aaaxaaa-aaaxaaa.jpg'
我该怎么做(从bash shell)
我需要递归删除所有子目录中的所有文件,其中文件名包含一个数字,后跟一个“ x”,然后一个数字,至少两次。
例:
我想删除这些文件:
'aaa-12x123-123x12.jpg'
'aaa-12x12-123x12-12x123.jpg'
但我不想删除这些文件:
'aaa.jpg'
'aaa-12x12.jpg'
'aaaxaaa-123x123.jpg'
'aaaxaaa-aaaxaaa.jpg'
我该怎么做(从bash shell)
Answers:
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 {} +
-delete
没有-exec rm
工作。但这确实做到了:find /path/to/directory -type f -name '*[0-9]x[0-9]*[0-9]x[0-9]*.jpg' | xargs rm
-print0
和xargs -0
,否则命令将失败,文件名包含空格或单引号。但是,-delete
并且-exec rm
可以在Windows上运行。如果某事不起作用,那不是由于它们的使用。
find
,因此请确保Unix实用程序是第一个PATH
。