我在文件夹/ root
中有文件file0001
file0002
file0010
file0011
file0100
file0121
我有这段代码
for (( i=1; i<=1000; i++))
do
file='/root/file'$i
done
我需要在循环中更改文件名
file0001 --> file1
file0010 --> file10
file0100 --> file100
有什么想法吗?
答案 0 :(得分:3)
您可以使用printf
命令:
file=$(printf "/root/file%04d" $i)
答案 1 :(得分:1)
如果你想修剪前导零,简单的bash脚本可以做到这一点:
#!/bin/bash
while read line
do
name=`echo $line | cut -c5- | sed 's/^[0]*//'`
echo "file$name"
done <your_file.txt
结果:
....
file0100-&GT; file100
file0121-&GT; file121
答案 2 :(得分:1)
尝试:
cd /root
for f in file*
do
echo mv "$f" "${f%%[0-9]*}${f#"${f%%[1-9]*}"}"
done
如果确定,请删除回声...
答案 3 :(得分:0)
top从文件名的数字部分删除尾随零:
rename 's/^file0*/file/' file*