我想为当前目录中的所有文件添加后缀。
这是我迄今为止从搜索stackoverflow和Google(以及一些乱七八糟的东西)到目前为止所得到的,但它一直在失败。我想将字符串3.6.16
附加到我目录中的所有.png
文件中。我可以做前缀部分但我的后缀失败(我猜是因为扩展名)。
使用bash:
for item in *.png; do mv "$file" "${file}_3.6.14.png"; done
答案 0 :(得分:26)
for file in *.png; do
mv "$file" "${file%.png}_3.6.14.png"
done
删除${file%.png}
后缀后, ${file}
扩展为.png
。
答案 1 :(得分:10)
您可以通过重命名命令
来完成此操作rename 's/\.png/_3.6.14.png/' *.png
通过bash,
for i in *.png; do mv "$i" "${i%.*}_3.6.14.png"; done
它会将所有.png
个文件中的.png
替换为_3.6.14.png
。
${i%.*}
最后一点之后的任何事情都会被削减。因此,.png
部分将从文件名中截止。mv $i ${i%.*}_3.6.14.png
使用文件名+ _3.6.14.png重命名原始.png文件。答案 2 :(得分:0)
如果您熟悉正则表达式 sed
非常好。
a) 根据自己的喜好修改正则表达式并检查输出
ls | sed -E "s/(.*)\.png$/\1_foo\.png/
b) 添加 p
标志,以便 sed
为您提供旧路径和新路径。使用 -n2 将其提供给 xargs,这意味着它应该保持 2 个参数的配对。
ls | sed -E "p;s/(.*)\.png/\1_foo\.png/" | xargs -n2 mv