![我需要重命名一组编号文件,但修改数字 + 5。怎么办?](https://linux22.com/image/1313120/%E6%88%91%E9%9C%80%E8%A6%81%E9%87%8D%E5%91%BD%E5%90%8D%E4%B8%80%E7%BB%84%E7%BC%96%E5%8F%B7%E6%96%87%E4%BB%B6%EF%BC%8C%E4%BD%86%E4%BF%AE%E6%94%B9%E6%95%B0%E5%AD%97%20%2B%205%E3%80%82%E6%80%8E%E4%B9%88%E5%8A%9E%EF%BC%9F.png)
可能重复:
如何从命令行或使用第三方工具批量重命名文件?
我有一组 47 个 .mp3 文件,用于多媒体项目,这些文件的名称分别为 01.mp3 - 47.mp3。每个文件的名称都应该是该数字 + 5,因此 02.mp3 实际上应该是 07.mp3。重命名的文件可以有某种前缀 + 数字,或者可以写入新文件夹以免干扰现有文件。
我可以使用 Ubnutu 和 Windows。有人可以建议一种方法来解决这个问题吗?
答案1
您可以在 awk 中使用如下脚本执行此操作:
#!/usr/bin/awk -f
BEGIN {
regex = "[0-9]+"
print "mkdir new"
}
{
if (match($8,regex)) {
before = substr($8,1,RSTART-1);
pattern = substr($8,RSTART,RLENGTH);
newnumber = pattern + 5
after = substr($8,RSTART+RLENGTH);
printf("mv %s new/%s%.2d%s\n", $8, before, newnumber, after);
}
}
假设您有一个包含以下文件的文件夹:
foo01
foo02
foo03
foo04
foo05
bar10.txt
bar11.txt
bar12.txt
bar13.txt
rename.awk
如果你执行该命令,ls -l|./rename.awk|sh
则你将得到:
new/foo06
new/foo07
new/foo08
new/foo09
new/foo10
new/bar15.txt
new/bar16.txt
new/bar17.txt
new/bar18.txt
rename.awk
当然,您可以修改脚本或 shell 命令以仅重命名符合特定模式或以不同数量增加的文件。