【发布时间】:2018-10-01 15:36:49
【问题描述】:
我遇到了一个问题,我有一个文件名目录:
something1.exr
something2.exr
something3.exr
我需要他们命名为
projectname.0000001.exr
projectname.0000002.exr
projectname.0000003.exr
我想出了这个:
NAME=image_test_GAM_4778x1806 c=1; for i in *.exr; do mv "$i" `printf $NAME."$c".exr`; let c=c+1; done
它可以重命名文件,例如:
image_test_GAM_4778x1806.1.exr
image_test_GAM_4778x1806.2.exr
image_test_GAM_4778x1806.3.exr
但是,我需要增加的数字有 7 位填充零,所以我发现我可以用 "%07d" 做到这一点,因此我认为这段代码应该可以工作:
NAME=image_test_GAM_4778x1806 c=1;
for i in *.exr; do
mv $i $(printf “%s.%07d.exr” “$NAME” “$c”);
let c=c+1;
done
但它不起作用并抱怨我使用 mv 不正确。我知道有问题,但从逻辑上讲它应该可以工作,我正在尝试将 $NAME 和 $c 分别传递给“%s.%07d.exr”。
有人能指出我正确的方向吗?任何帮助将不胜感激。
谢谢。
【问题讨论】:
-
第二个代码块中有大引号。
-
不要使用大写的变量名,这通常是为环境变量保留的
-
修复引用,你的第二个循环工作。
标签: bash rename file-rename batch-rename