运行以下脚本来重命名当前文件夹中的所有 .jpg 文件有时效果很好,但它通常会删除它正在重命名的一个或多个文件。我将如何编写脚本来重命名文件而不在过程中删除它们?这是在 Mac OSX 10.8 上运行,使用 GNU bash,版本 3.2.48
这是一个示例文件列表,我将更改以进行说明:
原始文件
red.jpg
blue.jpg
green.jpg
如果计数器设置为 5,则重命名文件
file_5.jpg
file_6.jpg
file_7.jpg
相反,我通常会丢失一个或多个文件
#!/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