Bash 在终端Mac OS X中大量删除带有公共前缀的文件 我有很多这样的图片:

Bash 在终端Mac OS X中大量删除带有公共前缀的文件 我有很多这样的图片:,bash,macos,terminal,batch-rename,Bash,Macos,Terminal,Batch Rename,除了那些没有后缀(-150x150,-256x256,等等)的,我想把它们全部删除 例如,查看上面的图像,我只想保留bg_section_2.jpg,bg_section_bw.jpg和bg_section_half_2.jpg,并删除带有前缀的其他内容 大小(-150x150…等)的数量在所有的应用程序中都不相同 例子。但它们有相同的结构 非常感谢您抽出时间!:) 您可以使用find来完成此操作。-regex选项接受包含一个或多个数字的所有内容[0-9]+,后跟一个x,然后再后跟一个或多个数字

除了那些没有后缀(-150x150,-256x256,等等)的,我想把它们全部删除

例如,查看上面的图像,我只想保留
bg_section_2.jpg
bg_section_bw.jpg
bg_section_half_2.jpg
,并删除带有前缀的其他内容

大小(-150x150…等)的数量在所有的应用程序中都不相同 例子。但它们有相同的结构


非常感谢您抽出时间!:)

您可以使用find来完成此操作。
-regex
选项接受包含一个或多个数字的所有内容
[0-9]+
,后跟一个
x
,然后再后跟一个或多个数字
[0-9]+
。只需确保首先通过复制目录并检查结果来测试;-)

根据s3cur3的通知(谢谢!),您应该在Mac上添加
-E
标志:

$find-E-类型f-regex'.*[0-9]+x[0-9]+.*-exec rm{}\;

您可以使用find完成此操作。
-regex
选项接受包含一个或多个数字的所有内容
[0-9]+
,后跟一个
x
,然后再后跟一个或多个数字
[0-9]+
。只需确保首先通过复制目录并检查结果来测试;-)

根据s3cur3的通知(谢谢!),您应该在Mac上添加
-E
标志:

$find-E-类型f-regex'.*[0-9]+x[0-9]+.*-exec rm{}\;

我没有Mac电脑,但我已经在Debian 9上用GNU find进行了测试。在Mac电脑上,“扩展(现代)正则表达式模式,而不是基本正则表达式”需要
-E
标志。完整的命令看起来像:
$find-E-类型f-regex'.*[0-9]+x[0-9]+.*-exec rm{}\
我没有Mac电脑,但我已经在Debian 9上用GNU find进行了测试。在Mac电脑上,“扩展(现代)正则表达式模式,而不是基本正则表达式”需要
-E
标志。完整命令看起来像:
$find-E-类型f-regex'.*[0-9]+x[0-9]+.*-exec rm{}\如何
rm*x*
rm*[0-9]*x[0-9]**
?如何
rm*x*
rm*[0-9]*x[0-9]**
$ mkdir tmp
$ cd tmp
$ touch {a,b,c}.png; touch {a,b,c}-{10,11}x{150,4000}.png
$ find . -type f -regex '.*[0-9]+x[0-9]+.*' -exec rm {} \;
$ ls
a.png  b.png  c.png