我正在尝试在bash中重命名几个不同的文件。 如何将例如temp_1重命名为temp_01直到09(temp_9到temp_09)?
我使用了sed但不知何故不起作用。
我试过这个:
for i in temp_?.txt;
do
j=echo $i | sed 's/[^0-9]*/0[^0-9]*/g';
mv "$i" "$j";
done
答案 0 :(得分:1)
答案 1 :(得分:1)
不需要sed
;只需使用您对文件名的了解:
for i in {0..9}
do
mv temp_$i.txt temp_0$i.txt
done
答案 2 :(得分:0)
它不起作用,因为你没有捕获sed的输出,你需要把它放在反引号或$( ... )
中。另外,你的RE是错的,试试这个:
for i in temp_?.txt
do
j=$(echo $i | sed 's/\([0-9]\{1,\}\)/0\1/g')
mv "$i" "$j"
done
注意:对于扩展正则表达式,我更倾向于使用sed
的-E选项,但我不知道您的sed
是否支持它。
答案 3 :(得分:0)
您需要转义变量作业
j=`echo echo $i | sed 's/[^0-9]*/0[^0-9]*/g'`
另外,除非你在一行上完成所有操作,否则你不需要在每个语句的末尾加分号