SyntaxHighlighter

2016-05-21

[BASH]搬移單一檔案到特定名稱資料夾

專門在整理謎片用Bash Script
結合最近才學到的find指令

find是個好指令,可以找出目前目錄下的特定檔案名稱的檔名
簡單說明一下使用法

使用法1, 找特定檔名。
find . -name [想找的名字(可搭配萬用字元)]

乍看之下跟ls很像,但是這傢伙可以自動找出子目錄中的檔名。但是光這點還不是很實用啊

使用法2, 找特定檔名後執行特定動作。
find . -name [*.txt] -exec rm -rvf {} \;
好,這很重要。上面示範了找到特定名稱後直接刪除。而且是連同同名子目錄下檔案一同遞歸刪除。上面的{}代表找到的檔案名稱,最後的\;代表執行指令到此為止。

好吧,上面的功能都是拿來刪除不需要的檔案的,根本沒有踏入正題
實際上很常用的功能:替單檔建立個別資料夾,然後把單檔歸檔
for file in `ls -1 *.avi`
    do
        mkdir -v ${file%.*}
        mv -v $file ${file%.*}/
    done
怎麼做到的?
首先找出特定單檔:這裡我用了找.avi檔。-1很重要,這個清單我並不想看到除了檔名以外的資訊。
然後用bash script裡面的字串操作,將最後的副檔名去除${file%.*}
接下來大家就知道啦,反正就是個別搬走。
但是這招現在有缺點,對付名字中間有空格的還是沒輒。還需要改進啊...

以上

人気の投稿