次のスクリプトを実行して、現在のフォルダー内のすべての .jpg ファイルの名前を変更するとうまくいく場合もありますが、名前を変更している 1 つまたは複数のファイルが削除されることがよくあります。プロセスでファイルを削除せずにファイルの名前を変更するスクリプトを作成するにはどうすればよいですか? これは、GNU bash、バージョン 3.2.48 を使用して Mac OSX 10.8 で実行されています。
これは、説明のために変更するファイル リストの例です。
元のファイル
red.jpg
blue.jpg
green.jpg
カウンターが 5 に設定されている場合、名前が変更されたファイル
file_5.jpg
file_6.jpg
file_7.jpg
代わりに、通常は 1 つまたは複数のファイルを失います
#!/bin/bash
counter=5
for file in *.jpg; do
echo renaming "$file" to "file_${counter}.jpg";
mv "$file" "file_${counter}.jpg";
let "counter+=1";
done
**更新**
ファイルを削除しているようには見えなくなりましたが、出力はまだ期待どおりではありません。例えば:
file_3.jpg
file_4.jpg
になる
file_3.jpg
file_5.jpg
カウンターが 4 に設定されている場合、期待される出力が
file_4.jpg
file_5.jpg
-
#!/bin/bash
counter=3
for file in *.jpg; do
if [[ -e file_${counter}.jpg ]] ; then
echo Skipping "$file", file exists.
else
echo renaming "$file" to "file_${counter}.jpg"
mv "$file" "file_${counter}.jpg"
fi
let "counter+=1"
done