2016-07-29 73 views
1

我有一些軟件將名爲My Library.bib的文件導出到名爲thesis的文件夾中。假定導出文件的名稱是固定的。每次我導出這樣的文件,我想:文件夾操作不觸發shell腳本

  1. 刪除任何舊文件,如果它們存在,稱爲MyLibrary.bib
  2. 從這個新文件中刪除空間,以便它成爲最新的MyLibrary.bib

我試圖做一個Automator的「文件夾行動」如下:

folder action

...然而,當shell腳本的作品完美,如果手動運行,該文件夾動作本身永遠不會出現引起。

儘管如此,仍然啓用了文件夾操作(請參閱下面的設置),其他文件夾操作似乎也起作用。

folder actions setup

綜上所述,我只是想叫My Library.bib進入thesis文件夾中的所有文件(在任何時間,自動)成爲重命名爲MyLibrary.bib,替換任何現有MyLibrary.bib文件。任何想法出了什麼問題,或者如何實現這一點?提前致謝。

+0

你保存在'〜/圖書館/腳本/文件夾操作Scripts'腳本? –

+0

@MarkSetchell否 - 自動保存到''/ Library/Workflows/Applications/Folder Actions''(我聽說Mac OS X版本的默認位置已更改)。但是,在您建議的路徑中嘗試它也沒有效果。 –

回答

1

當您使用「運行Shell腳本」行動,當前目錄是首頁文件夾,而不是「論文」文件夾中。

所以,你必須使用cd命令來改變當前目錄

信息:

  • 的「獲取文件夾內容」行動是無用的,你想要做什麼, 可以去掉它。
  • rm命令是沒有必要的,你可以使用mv -f到 覆蓋現有文件

read firstLine ### get the path of the first dropped item 
myDir=$(dirname "$firstLine") ### get the parent (this folder action) 
cd "$myDir" && if [ -f "My Library.bib" ]; then 
    mv -f "My Library.bib" "MyLibrary.bib" 
fi 
+0

'if'語句同樣沒用。只是'mv -f「我的Library.bib」「MyLibrary.bib」'。 – Kusalananda

+0

@Kusalananda,是的,但是當沒有這樣的文件 - >'FolderActionsDispatcher [365]:error:{}' – jackjr300

+0

啊,好的,工作流會在日誌文件中輸入一個錯誤。之後可能會有'2>/dev/null' ... – Kusalananda