重命名小数点后数字相同的多个文件

重命名小数点后数字相同的多个文件

我有多个文件,名称分别为 vort-0.01.txt、vort-0.02.txt、...

vort-0.1.txt...vort-0.2.txt...等等。

我想用两个小数点重命名每个文件,即将 vort-0.1.txt 的名称更改为 vort-0.10.txt,并保持 vort-0.01.txt 不变。

我如何使用 bash 脚本来做到这一点?

感谢您的帮助。

答案1

使用基于 perl 的rename命令,然后给出

$ ls vort*.txt
vort-0.001.txt  vort-0.01.txt  vort-0.1.txt  vort-0.2.txt

然后

rename -n 's/(\d+\.\d+)/sprintf "%.2f", $1/e' vort*.txt

将在任何地方强制使用 2 位精度,因为

rename(vort-0.001.txt, vort-0.00.txt)
rename(vort-0.1.txt, vort-0.10.txt)
rename(vort-0.2.txt, vort-0.20.txt)

如果你想重命名为最低限度精度即只修改当前具有个位数精度的文件名,然后

$ rename -n 's/(\d+\.\d)(?=\D)/sprintf "%.2f", $1/e' vort*.txt
rename(vort-0.1.txt, vort-0.10.txt)
rename(vort-0.2.txt, vort-0.20.txt)

-n一旦您确认它正在做正确的事情,就将其删除。


要单独使用 bash shell 操作来做同样的事情,

for f in vort-?.?.txt; do 
  base=${f%.txt}
  printf -v newname 'vort-%.2f.txt' "${base#vort-}"
  echo mv -- "$f" "$newname"
done

这里,删除echo之后的测试。

相关内容