2013-12-16 65 views
0

我將幾個word文檔轉換爲pdf。輸入文件名稱類似於「CM_Genetics_in_OBGYN_docx」,而輸出文件名稱與此類似「job_10-Microsoft_Word _-_ CM_Genetics_in_OBGYN_docx.pdf」我想刪除「job_10-Microsoft_Word _-_」和「_docx」,只剩下pdf文件名「CM_Genetics_in_OBGYN.pdf」。如果最後一部分過於複雜,我真的很想結束「OBGYN.pdf中的CM遺傳學」,但是「CM_Genetics_in_OBGYN.pdf」是可以接受的。我有一些與蘋果腳本和Linux命令的經驗,但不能指出這一點。使用Applescript或Linux從文件名中刪除字符串

回答

1

在這裏你去:

for fn in job_*.pdf; do 
    newname=${fn#job_??-*-_} 
    newname=${newname/_docx} 
    newname=${newname//_/ } 
    echo "mv '$fn' '$newname'" 
done 

這將打印mv命令整裝待發執行,但沒有任何重命名。要執行重命名,只需將輸出傳送到sh

echo對安全地測試所有內容非常有用。一定要檢查你能找到的最奇怪的模式,以覆蓋所有的角落案例。如果一切正常,改變echo做你想做的,而不是執行的實際行動,例如:

for fn in job_*.pdf; do 
    newname=${fn#job_??-*-_} 
    newname=${newname/_docx} 
    newname=${newname//_/ } 
    mv "$fn" "/some/other/dir/$newname" 
done 
+0

這是結果我在終端看起來像我想要的。非常感謝!此外,我正在嘗試將其添加到automator中的工作流程中,我已將其設置爲逐個分配項目,並且我希望此步驟重命名該項目並將其從工作流程中的相同文件夾中返回。我到底該如何做到這一點。如果該命令剛剛結束並且沒有重定向,該文件將返回到它出現的位置,對吧?儘管如此,我無法做到這一點。謝謝您的幫助。 –

+0

你應該可以通過調整循環中最後一個'echo'行來完成。 (我對我的帖子做了一個小小的更新,以防它可能有助於你的下一步。) – janos

相關問題