使用shell在目录中重命名具有不同名称的多个文件

时间:2012-12-26 11:32:19

标签: shell rename file-rename multiple-files

我发现了大多数此类问题,其中名称的更改对于该目录中的整个文件集是相同的。 但我在这里提出的情况是为该目录中的每个文件指定一个不同的名称,或者只是添加一个不同的前缀。

例如,我在一个目录中有大约200个文件,它们都在文件名中包含数字。我想要做的是为每个文件添加1到200的前缀。比如1_xxxxxxxx.png,2_xxxxxxxx.png ........... 200_xxxxxxxx.png

我正在尝试这个,但它并不是每次都增加我的$ i,而是为每个文件提供1_的前缀。

echo "renaming files" 
i=1                                             #initializing
j=ls -1 | wc -l                                 #Count number of files in that dir
while [ "$i" -lt "$j" ]                         #looping 
do
    for FILE in * ; do NEWFILE=`echo $i_$FILE`; #swapping the file with variable $i
    mv $FILE $NEWFILE                           #doing the actual rename
    i=`expr $i+1`                               #increment $i
done

感谢您的任何建议/帮助。

2 个答案:

答案 0 :(得分:1)

要使用expr增加,你肯定需要空格(expr $i + 1),但你可能会做得更好:

echo "renaming files" 
i=1
for FILE in * ; do
    mv $FILE $((i++))_$FILE
done

答案 1 :(得分:1)

i=1
for f in *; do
  mv -- "$f" "${i}_$f"
  i=$(($i + 1))
done