[英]How to rename all the files and no overwriting?
我知道如何用數字重命名文件夾中的所有文件:
i=1
for f in *.jpg
do
NEW_NAME=$( printf "%05d.jpg" $i )
# echo mv "$f" "$( printf "%05d.jpg" $i )"
mv -n "$f" "$NEW_NAME"
((i++))
done
因此,我所有的文件都將被重命名,但是如果我有0004.jpg
類的文件,它將不會將該文件重命名為n + 1。 我嘗試添加一個循環以增加i
如果名稱存在):
i=1
for f in *.jpg
do
NEW_NAME=$( printf "%05d.jpg" $i )
# echo mv "$f" "$( printf "%05d.jpg" $i )"
mv -n "$f" "$NEW_NAME"
MV=$?
while [ $MV -ne 0 ]
do
((i++))
NEW_NAME=$( printf "%05d.jpg" $i )
mv -n "$f" "$NEW_NAME"
MV=$?
done
((i++))
done
但似乎不起作用。 有什么幫助嗎?
您的問題是即使文件已經存在, mv -n
也會返回零。
我很想這樣做:
i=1
mkdir .newnames
for f in *.jpg
do
NEW_NAME=$( printf "%05d.jpg" $i )
# echo mv "$f" "$( printf "%05d.jpg" $i )"
mv "$f" ".newnames/$NEW_NAME"
((i++))
done
mv .newnames/* .
rmdir .newnames
基本上,通過將文件移動到臨時目錄中(前導.
(點)可防止for循環嘗試重命名文件),可以消除文件名沖突的可能。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.