Shell - 如何重命名文件名中间的文件?

丹尼斯

我必须调整图像大小,并想即时重命名它们名称如下

  • Compet-210-123456.jpg
  • Compet-210-123457.jpg
  • ...
  • Compet-211-123555.jpg 和

我想在两个数字之间注入4k,例如

  • 竞争- 211- 4k -123555.jpg

目前我只知道最后添加4k如下所示:

for img in ./Compet-[0-9][0-9][0-9]-[0-9][0-9][0-9][0-9][0-9][0-9].jpg do; 
  convert "$img" -resize "3840x2160^" \
                 -gravity center \
                 -crop 3840x2160 \
                 "${img%.jpg}-4k.jpg"
done 
用户1686

根据原始文件名,有时可以精确修剪不需要的一半:

head=${img%-*.jpg}
tail=${img#./Compet-*-}
newimg=$head-4k-$tail

另一种方法是使用=~以下方法应用正则表达式匹配

re='^\./(Compet-[0-9]+)-([0-9]+\.jpg)$'
if [[ $img =~ $re ]]; then
    newimg=${BASH_REMATCH[1]}-4k-${BASH_REMATCH[2]}
    convert "$img" ... "$newimg"
fi

Bash 使用“POSIX 扩展正则表达式”正则表达式语法,捕获组放置在 BASH_REMATCH 数组中。

我使用了一个变量来保存正则表达式模式,因为[[ ]]否则右侧的引用/转义规则可能会有点难看。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用Shell脚本重命名文件名

在bash shell脚本中,如何重命名多个文件,仅保留数字和原始文件名的扩展名?

當我不知道文件名稱時重命名文件 - shell 腳本

如何通过OSX上的JavaScript,Perl或Shell重命名带有创建日期时间戳的文件名?

Shell重命名文件名,使用不可打印的字符

通过使用Shell脚本替换文件名中的特定模式来重命名多个文件

如何通过一个命令在 Windows 10 中通过 power-shell 或 hyper.js 重命名多个文件名

如何在Shell命令行脚本中重命名文件名-用空格替换下划线

如何使用shell复制和重命名多个文件

如何使用linux shell重命名文件以删除“”字符

我正在尝试提出一个 shell 脚本来重命名文件并在每次文件名更改时运行命令

通过Shell脚本重命名多个文件

使用Shell脚本重命名文件

想写个shell重命名多文件

如何重命名文件,同时保持文件名中间位置不变

如何重命名(太长)文件名

如何从Shell脚本中的旧文件名获取新文件名?

重命名文件名

如何比较 SHELL SCRIPT 中的文件名

如何在shell中使用文件名填充变量

如何从Shell变量获取路径的文件名部分

如何使用Shell脚本返回以* ino结尾的文件名?

使用 shell 脚本在 Unix 服务器中重命名具有相同文件名模式的文件

Unix shell 延迟文件名扩展

Linux Shell脚本-grep。文件名

从shell / bash输出的时髦文件名?

Shell从文件名中删除模式

Shell 脚本 - 获取整个文件名

如何重命名文件夹中的文件名?