我有很多名为activity_unpublish_39x39.pngabc_29x29.png等的文件。

我想将名称转换为activity_unpublish.png(删除_39x39)
abc.png(删除_29x29)。

谁能告诉我我该如何实现?

在Mac OS X上工作会更好。

最佳答案

以下小shell脚本应在Linux和Mac OS上都可以使用。请注意,它正在当前文件夹中工作,此外,您还必须根据需要更改patsuf(此处suf="\.png"pat="_[0-9]+x[0-9]+$suf"可以与您的给定示例一起使用)。
它使用sed-E,后者在manpage中未记录。这是Mac OS中的选项,在Linux中称为-r。在Linux中,它也存在but as said not documented:

#!/bin/sh
suf="\.png"
pat="_[0-9]+x[0-9]+$suf"

for f in *; do
   if [[ $f =~ $pat ]]; then
      newName=$(echo "$f" | sed -E "s/$pat/$suf/g")
      mv "$f" "$newName"
   fi
done

09-30 14:55