2012年9月18日 星期二

Linux 檔案整理的 shell script

緣起:同一個目錄夾有許多avi +jpg(巷子內的應該知道我在說啥),每次都要手動更改檔名和移動到相對應的目錄夾,一個目錄可能就有數十個檔案,長期下來覺的自己很白痴,幹嘛不寫個shell script來執行就好。

功能:
1.建立和主檔名一樣的目錄夾,例如檔名是ABS-001.avi,那麼建立的目錄夾就會是ABS-001,大寫都會一樣喔!

2.會把相同檔名的所有檔案都移動到相對名稱的目錄夾,例如ABS-001.avi和ABS-001.jpg都會移動到ABS-001的目錄夾裡面。



步驟:

1.建立一個可執行的shell script
Linux@Linux:/$ touch createfolder.sh ; chmod +x createfolder.sh
Linux@Linux:/$ vi createfolder.sh

把紅字全部都複製貼上後儲存離開
-------------------------------------------------------------------------
#!/bin/bash
read -p "Please input subname : " subname
for i in *.$subname; do
if [ "$i" != "*.[$subname]" ]; then
filename="`echo $i | sed -e s/\.${subname}$//`"
mkdir ${filename}
mv ${filename}.* ${filename}
fi
done
-------------------------------------------------------------------------

2.接下來把剛剛新增好的createfolder.sh複製到/bin裡面,這是因為/bin是在$PATH的預設值內,放在這裡可以隨時執行。
Linux@Linux:/$ sudo cp createfolder.sh /bin


PS:目前這支shell script的缺點
1.需要自行輸入副檔名的名字,譬如avi或是jpg(大小寫有差別)。
2.主檔名要是大小寫不同,那建立的目錄夾也會不同,例如檔名是ABCDEF.avi和abcdef.jpg,那麼系統就會建立ABCDEF和abcdef兩個資料夾。

沒有留言:

張貼留言