تغییر نام فایلهای با پسوند مشابه در یک پوشه(مبتدی)
من قبلا توی ویندوز که بودم دیدم واسه انجام یه همچین کار ساده ای برنامه نوشتن.
مثلا من یه سری عکس دارم و میخوام یه نظمی به اسمهاشون بدم کافیه به این اسکریپت بگم همه فایلهای با پسوند .jpg رو اسمشون رو بذار Photo.
این اسکریپت خودش بر اساس تعداد عکسها اونها رو با اسمی که من بهش دادم شماره گذاری میکنه.
#!/bin/bash
help(){
echo -e "\033[1m Missed/Anonymes Argument $1\033[0m"
echo -e "\033[1m Please Pass To This Script ONLY 2 Argument\033[0m"
echo -e "\033[1m 1: -e or --extension Of Files (.jpg, .mp4, etc)\033[0m"
echo -e "\033[1m 2: (Optional Argument) -n or --name (Photos, Clips, ...) The Default Name is File\033[0m"
exit 1
}
newName=File
if [ $# -gt 1 ];then
while [ $# -gt 0 ]
do
key=$1
case $key in
-e | --extension )
extension=$2
shift
;;
-n | --name )
newName=$2
shift
;;
* )
help $key
;;
esac
shift
done
else
help
fi
if [ -z ${extension+x} ];then
help
fi
listOfFiles=($(ls *${extension} 2>/dev/null))
if [ $? -ne 0 ];then
echo -e "\033[1m There is no file with $extension extension.\033[0m"
else
count=$(echo ${#listOfFiles[@]})
indices=($(seq -w $count))
current=0
for item in ${listOfFiles[*]}
do
mv $item "./$newName${indices[$current]}$extension" 2>/dev/null
((current++))
done
fi
مثال
ehsan@ehsan-SVF152190X:~/Desktop/Files$ touch file{1..25}.{txt,jpg}
ehsan@ehsan-SVF152190X:~/Desktop/Files$ ls
file10.jpg file12.jpg file14.jpg file16.jpg file18.jpg file1.jpg file21.jpg file23.jpg file25.jpg file3.jpg file5.jpg file7.jpg file9.jpg
file10.txt file12.txt file14.txt file16.txt file18.txt file1.txt file21.txt file23.txt file25.txt file3.txt file5.txt file7.txt file9.txt
file11.jpg file13.jpg file15.jpg file17.jpg file19.jpg file20.jpg file22.jpg file24.jpg file2.jpg file4.jpg file6.jpg file8.jpg
file11.txt file13.txt file15.txt file17.txt file19.txt file20.txt file22.txt file24.txt file2.txt file4.txt file6.txt file8.txt
ehsan@ehsan-SVF152190X:~/Desktop/Files$ renameall -e .jpg -n Photo
ehsan@ehsan-SVF152190X:~/Desktop/Files$ ls
file10.txt file14.txt file18.txt file21.txt file25.txt file5.txt file9.txt Photo04.jpg Photo08.jpg Photo12.jpg Photo16.jpg Photo20.jpg Photo24.jpg
file11.txt file15.txt file19.txt file22.txt file2.txt file6.txt Photo01.jpg Photo05.jpg Photo09.jpg Photo13.jpg Photo17.jpg Photo21.jpg Photo25.jpg
file12.txt file16.txt file1.txt file23.txt file3.txt file7.txt Photo02.jpg Photo06.jpg Photo10.jpg Photo14.jpg Photo18.jpg Photo22.jpg
file13.txt file17.txt file20.txt file24.txt file4.txt file8.txt Photo03.jpg Photo07.jpg Photo11.jpg Photo15.jpg Photo19.jpg Photo23.jpg