[英]Rename all files in a folder
我在Linux上,並下載了很多有趣的圖片。 不幸的是,我留下了一堆重復的名字,如download (1)
和image.jpeg
。 我想將它們全部更改為更有用的內容。
有沒有一種方法(最好使用bash)將所有文件重命名為帶有前導零的連續4位數字?
例如:
0001
0002
0003
0004
....
上一個答案中提供的代碼段是一種很好的實現方式,但是輸入錯誤或外殼不兼容可能會導致其無法正常運行。
請改為嘗試以下代碼。 它執行相同的操作,但是每個快捷方式都已在循環中使用調試echo
命令顯式編寫。
counter=1
cd /my/image/directory
for f in $(ls -1)
do
new_filename=$(printf "%04d" ${counter})
echo "renaming ${f} ..to.. ${new_filename}"
mv ${f} ${new_filename}
(( counter=${counter}+1 ))
done
屏幕輸出將有些混亂。 如果文件太多,則可能需要添加| tee screen.out
使用done
命令將| tee screen.out
到行尾。 這樣您就可以返回並查看screen.out中記錄的哪個文件發生了什么。
我創建了自己的工具來執行此操作 。 它還維護文件擴展名,我沒有提到,但可能應該包括在內。 這是代碼:
#!/bin/sh
dir=$1
cd $dir
echo "Renaming all files in $dir."
COUNTER=1
for i in `ls -1`
do
extension=${i##*.}
mv "$i" "$COUNTER.$extension"
echo "$i ==> $COUNTER.$extension"
COUNTER=$(expr $COUNTER + 1 )
done
(在撰寫本文時)它不包括前導零,但可以完成工作。
只要您不在乎哪個文件都重命名為什么,就很容易:)
counter=1
for f in *; do
mv "$f" "$( printf "%04d" $((counter++)) )"
done
嘗試使用后綴.bash將所有文件重命名為文件夾中的后綴.sh很容易完成
rename .bash .sh *.bash
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.