rename指令利用Perl正規表達式修改檔案名。綜合運用find、rename和mv。
1、用特定的格式重命名目前目錄下的圖像檔案,最簡單的方法是使用下面的腳本:
#!/bin/bash
#檔案名:rename.sh
#用途:重命名.jpg和.png檔案
count=1;
for img in `find . -iname '*.png' -o -iname '*.jpg' -type f -maxdepth 1`
do
new=image-$count.${img##*.}
echo "Renaming $img to $new"
mv "$img" "$new"
let count++
done
輸出結果:
$./rename.sh
Renaming back.jpg to image-1.jpg
Renaming new.jpg to image-2.jpg
Renaming next.png to image-3.jpg
該腳本将目前目錄下所有的.jpg和.png檔案重命名,新檔案名的格式為image-1.jpg、image-2.jpg等等,
2、工作原理
使用find指令進行搜尋,-o用于指定多個-iname選項,後者用于執行大小寫無關的比對。-maxdepth 1指在目前目錄下進行比對。
為了跟蹤圖像編号,初始化count=1,下一步就是用mv指令重命名檔案。是以需要構造出新的檔案名。${img##*.}對處于目前循環中的檔案名進行解析并獲得檔案擴充名。
let count++用來在每次循環中增加檔案編号,
還有許多其他執行重命名操作的方法,
$ rename *.JPG *.jpg
将檔案名中的空格替換成字元"_"
$ rename 's/ /_/g' *
's/ /_/g' 用于替換檔案名,而*是用于比對目标檔案的通配符,它可以以*.txt或其他樣式出現
轉換檔案名的大小寫
$rename 'y/A-Z/a-z/' *
将所有的.mp3檔案移入給定的目錄
$find path -type f -name "*.mp3" -exec mv {} target_dir \;