2011-11-06 58 views
0

操作系統:Mac OSX 10.6.8
殼牌:Bash shell中(終端)
Mac的bash腳本來組織下載的文件類型

我想編寫一個腳本,選擇我的組織Downloads文件夾。

目的:
- 當腳本開啓時,從瀏覽器下載一個特定的文件類型(比如:「.rar程序」)的文件,保存在下載的子目錄(例如:‘rar_downloads’) 。
- 不會影響下載目錄中的當前文件
- 當腳本關閉時,下載的文件通常會保存到Downloads目錄。

我很感謝任何有關如何編寫此內容的見解。謝謝!

+0

我不知道AppleScript(Automator工作流?)是不是一個更簡單的解決方案。 – 2011-11-06 20:58:13

回答

0

簡介:您需要兩個時間戳,腳本開啓和腳本關閉,它們定義了您的移動的時間範圍。讓腳本持續工作相當困難,因爲你需要瀏覽器集成,所以手動運行(或通過crontab)。

粗糙輪廓:

find Downloads -newer script-on -and -not -newer script-off | while read filename; do 
    SUFFIX=`echo "$filename" | sed -n -e 's/.*\.\([^./]*\)$/\1/p'`; 
    if [ -n "$SUFFIX" ]; then mv "$filename" "Downloads/${SUFFIX}_downloads"; fi 
done 

的在第2點中提取後綴sed的表達,即在最後的文件名的終端部分。在最後一個組件中,如果沒有後綴,則不打印輸出。

+0

請參閱http://www.thegeekstuff.com/2010/07/bash-case-statement/示例3.如果要在某些文件夾中聚合多個文件類型(例如,指示.jpeg, .jpg,.png到./images子文件夾)。在任何情況下,「mkdir -p」命令都會有幫助,以確保您的目標子目錄存在。 @thiton的一個非常小的改進是使用「SUFFIX = $ {filename ## * \。}」來捕獲文件擴展名。 – phatfingers

+0

謝謝您的及時回覆!你的代碼有點壓倒性的,所以我需要花一些時間研究所使用的命令,然後才能理解這裏發生了什麼(更不用說正則表達式了)。 – Red