2013-03-14 18 views
0

我在文件夾/根如何更改循環中的文件名?

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

你就不能使用'rename'? – Ander2 2013-03-14 08:36:28

+0

我不確定你需要什麼:你需要瀏覽所有文件嗎?你需要在循環中生成他們的名字,以便你可以對它們進行處理?你可以只在'/ root/file *;'(或'/ root/file [0-9] *')中做文件嗎? – 2013-03-14 08:56:33

回答

3

您可以使用printf命令:

file=$(printf "/root/file%04d" $i) 
+0

這就是我需要的,謝謝! – Alex 2013-03-14 08:59:24

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

0

從您的文件名的數字部分頂部刪除尾隨零使用:

rename 's/^file0*/file/' file* 
1

嘗試:

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

如果確定刪除回聲......