2011-07-27 21 views
0

我需要我的腳本將具有特定擴展名和XML的文件打包到按文件命名的目錄中。另外該目錄需要重命名爲文件名+ .itmsp。目前該腳本基於文件名創建目錄,但我不知道如何將.itmsp添加到目錄名稱。Bash根據文件名製作目錄並添加.itmsp

#!/bin/bash 
path='/Volumes/Drive/TEST'  
cd $path 

for FILE in `ls | egrep "xml|mov|mpeg|mpg"` 
do 
    DIR=`echo $FILE | cut -d '.' -f 1` 
    mkdir -p $DIR 
    mv $FILE $DIR 
done 
+0

爲了澄清,如果你有一個名爲'foo.mov'要創建一個名爲'foo.itmsp'目錄下的文件?之後你想把'foo.mov'移動到'foo.itmsp /'中嗎? –

+0

我有兩個文件,一個叫做foo.xml,另一個叫做foo.mov/mpg/mpeg,具體取決於視頻文件。我想將這兩個文件移動到一個名爲foo.itmsp的目錄中 – JRM

回答

4

因爲這是bash下

cd /Volumes/Drive/TEST 
for FILE in *.{xml,mov,mpeg,mpg} 
do 
    # remove the last dot and subsequent chars, then add new ext 
    DIR="${FILE%.*}.itmsp" 
    mkdir -p "$DIR" 
    mv "$FILE" "$DIR" 
done 
+0

這工作,並比削減選項更好 - 謝謝。只有小小的事情是,它創建了一個名爲* .itmsp的附加目錄,它是空的 - 但它可以被刪除 – JRM

+0

我認爲會發生的唯一方式是如果模式爲*。{xml,mov,mpeg,mpg}'沒有匹配任何文件,並且您打開了shell選項'nullglob'。 –

0

只需添加.itmsp到$ DIR,如「$ DIR.itmsp」。

+0

該目錄確實添加了.itmsp。但沒有文件,它削減了目錄之外的文件擴展名 – JRM

相關問題