Linux:如何为维护扩展名的文件添加后缀

时间:2016-04-25 18:07:22

标签: linux bash centos batch-rename

Linux bash,Centos。

如何为维护扩展名的文件添加后缀? 我可以找到关于如何更改或添加文件扩展名的答案,但不能找到如何添加后缀来维护扩展名的答案......

例如:如果我想在某些目录中为所有图像文件(.jpg,.png,.gif,.JPEG)添加'_thumb'后缀。

somefile.jpg - > somefile_thumb.jpg

编辑:如果可能,可以重新启动脚本,而不会影响已重命名的文件。为了向列表添加更多扩展名。

提前致谢!

3 个答案:

答案 0 :(得分:4)

您可以使用:

shopt -s nullglob
for f in *.jpg *.png *.gif *.JPEG; do
    [[ $f != *_thumb.* ]] && mv "$f" "${f%.*}_thumb.${f##*.}"
done

答案 1 :(得分:1)

稍有不同,您可以强制删除仅使用以下内容找到的扩展程序:

mv "$file" "${file%.${file##*.}}_thumb.${file##*.}"

答案 2 :(得分:0)

'rename'命令可能就是你要找的东西:

rename 's/^(.*)\.(png|jpg|gif|JPEG)$/$1_thumbnail.$2/' *.png *.jpg *.gif *.JPEG

解释:

  • 引号中的第一个参数表示替换:'s / regex-what-to-find / replacement-string /'
  • 此正则表达式匹配以随机字符串开头并以列出的扩展名之一附加的点结尾的每个文件名
  • 用圆括号括起来的正则表达式部分会将匹配的子字符串存储到替换字符串中使用的变量(如$ 1和$ 2)。
  • *。png * .jpg * .gif * .JPEG只是文件列表,星号由shell扩展为完整文件列表。如果目录中只有图像,则只能使用一个星号。