如何在循环中更改文件名?

时间:2013-03-14 08:30:25

标签: linux bash

我在文件夹/ 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 个答案:

答案 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*