0

名前の変更がそのディレクトリ内のファイルのセット全体で同じであるという、この種の質問のほとんどを見つけました。しかし、ここでは、そのディレクトリ内のすべてのファイルに別の名前を付けるか、別のプレフィックスを追加するという状況が提示されています。

たとえば、ディレクトリに約 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

提案/ヘルプをありがとう。

4

2 に答える 2

1

でインクリメントするexprには、間違いなくspaces(expr $i + 1)が必要ですが、次のようにする方がよいでしょう。

echo "renaming files" 
i=1
for FILE in * ; do
    mv $FILE $((i++))_$FILE
done
于 2012-12-26T11:42:40.890 に答える
1
i=1
for f in *; do
  mv -- "$f" "${i}_$f"
  i=$(($i + 1))
done
于 2012-12-26T11:56:29.833 に答える