2011-09-20 62 views
0

只是在這裏學習Automator,但我試圖在文件上運行一個轉換命令(blah.rtf-> blah.mobi),並且我想要生成的.mobi文件並在其上運行另一個shell命令一個不同的行動。或者是,還是有辦法將它設置爲第二個變量,並在同一個動作中對其執行操作?將shell結果傳遞給另一個shell命令?

這裏是我到目前爲止的代碼(使用口徑命令行工具):

首先行動:

for f in "[email protected]" 
do 
    ebook-convert "$f" "$f".mobi 
done  

我想傳遞的.mobi文件運行:

for f in "[email protected]" 
do 
    mv "$f" $(echo "$f" | cut -d'.' -f1).mobi 
done 

有什麼想法?謝謝!

+0

很密切的關係(雖然從略微不同的):[使用AWK以除去多個文件擴展名中的一個(http://stackoverflow.com/questions/7479536 /) –

+1

你有什麼問題?你的命令是正確的,並且是我可以在這裏找到的唯一問題的合理答案。 (使用變量替換會更有效率,但這與您的主要問題是相切的。'mv「$ f」「$ {f%。*}」。mobi') – tripleee

+0

哦,你當然可以做到你想要在第一個'for'循環中,而且確實應該。 – tripleee

回答

3

爲了通過轉換後的文件到後續動作,第一個動作必須輸出其路徑:

for f in "[email protected]" 
do 
    ebook-convert "$f" "$f".mobi 
    echo "$f".mobi 
done 

但你可以使它更通過使第一動作簡單的創建一個具有正確名稱的文件首位(如@tripleee建議的):

for f in "[email protected]" 
do 
    ebook-convert "$f" "${f%.*}".mobi 
    # echo "${f%.*}".mobi # optional -- uncomment if you need to pass the files on to subsequent actions 
done 
+0

這太棒了!真的很感激它。 – Kristian

相關問題