我在文件夹 /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
有任何想法吗?
您可以使用以下printf
命令:
file=$(printf "/root/file%04d" $i)
如果你想修剪前导零,简单的 bash 脚本可以解决问题:
#!/bin/bash
while read line
do
name=`echo $line | cut -c5- | sed 's/^[0]*//'`
echo "file$name"
done <your_file.txt
结果: ....
file0100->file100
file0121->file121
尝试:
cd /root
for f in file*
do
echo mv "$f" "${f%%[0-9]*}${f#"${f%%[1-9]*}"}"
done
如果确定,请删除回声...
顶部从文件名的数字部分删除尾随零使用:
rename 's/^file0*/file/' file*