0

我在文件夹 /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

有任何想法吗?

4

4 回答 4

3

您可以使用以下printf命令:

file=$(printf "/root/file%04d" $i)
于 2013-03-14T08:34:29.493 回答
1

如果你想修剪前导零,简单的 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

于 2013-03-14T08:45:42.330 回答
1

尝试:

cd /root
for f in file*
do
  echo mv "$f" "${f%%[0-9]*}${f#"${f%%[1-9]*}"}"
done

如果确定,请删除回声...

于 2013-03-14T09:05:50.853 回答
0

顶部从文件名的数字部分删除尾随零使用:

rename 's/^file0*/file/' file*
于 2013-03-14T09:00:32.187 回答