![批量重命名具有不同结尾的文件(不改变结尾)](https://linux22.com/image/852040/%E6%89%B9%E9%87%8F%E9%87%8D%E5%91%BD%E5%90%8D%E5%85%B7%E6%9C%89%E4%B8%8D%E5%90%8C%E7%BB%93%E5%B0%BE%E7%9A%84%E6%96%87%E4%BB%B6%EF%BC%88%E4%B8%8D%E6%94%B9%E5%8F%98%E7%BB%93%E5%B0%BE%EF%BC%89.png)
我的问题是,我有一个包含许多不同文件的文件夹,例如:
xxxxxxxxx.avi yyyyyyy.jpg zzz.txt
我想将它们重命名为
001.avi 002.jpg 003.txt
它不适用于thunar rename
,因为文件名的长度并不完全相同。
或许可以rename 's/.*......
,但我有点卡住了......
感谢您的任何建议
答案1
如果你习惯使用命令行解决方案,那么你可以在 bash 中执行如下操作
i=1
for file in *.*; do
printf -v newfile "%03d.%s" $((i++)) ${file##*.}
echo mv -v -- "$file" "$newfile"
done
这echo
将阻止它实际进行任何更改(它只会输出它将要进行的命令列表) -一旦您确信它将执行您想要的操作,mv
您就可以通过运行相同的命令来进行更改。echo
答案2
答案3
找到了另一个相当简短的解决方案:
n=0; for f in * ; do mv "$f" "$n.${f/*./}"; n=$((n+1)); done