2010-08-29 65 views
1

以下是我想要做的:Bash腳本使用rar提取拆分檔案文件

我有一千個拆分rar檔案文件夾名稱歸檔。 文件的名稱0001.part1.rar 0002.part2.rar 0003.part3.rar等

  1. 基於上述例如文件的前綴閱讀0001.part1.rar
  2. 創建一個目錄0001
  3. 移動上面創建的目錄中具有相同前綴的所有文件。
  4. 提取該目錄
  5. 中的文件刪除這個目錄中
  6. 所有RAR文件重命名基於從文本文件名列表上提取的文件。
  7. 用不同參數重命名文件。
  8. 將重命名的文件(從步驟6)移動到一個名爲Done的新目錄。
  9. 繼續文件0002.part1.rar然後執行步驟2-8等。

其他如何將它與cron結合? 這應該是隻運行一次......

提取第一組的RAR的文件後變更爲:

file.001 
file.002 
file.003 

等,這是我需要提取過。在第6步

澄清:

提取第二組RAR的(file.001,file.002等) 後,我想根據從文本文件名列表上重命名。

例如文件列表從文本文件:

0001 - GB Funds.DAT 
0002 - US Bonds.DAT 
0003 - SG Securities.DAT 
0004 - LU Credits.DAT 

澄清步驟7:

After renaming the file I want to move it on a new folder called "Done" 

澄清步驟9:

Go back to the main folder with all the other archives 
and continue extracting the next set of archives and 
do the same steps from 1 to 8. 
+0

告訴我們你試過了什麼。 – ghostdog74 2010-08-30 00:18:19

回答

0

你可以寫一個shell腳本,包括像這樣:

# foo.sh 
set -e 
set -u 

for i in `find -max-depth 1 -type f -name '*.rar' | sed 's/\.part*\.rar$//' | sort -u`; do 
    mkdir $i 
    mv $i.part*rar $i 
    cd $i 
    unrar x $i.part1.rar 
    DST=`grep $i ../rename.txt | sed 's/^[0-9]\+ - //'` 
    mv $i "$DST" 
    # and so on, rar it together again, move it done directory etc. 
    cd .. 
done 

運行它,然後通過:

bash foo.sh 

要弄清6./8./9。

我不知道你爲什麼要通過cron運行它,因爲你只想運行它一次。 at專爲運行一次性作業而設計,或在屏幕會話中運行。

我建議你在開始整個工作之前,用集合中的1-3個文件和最終的腳本進行一些測試。

+1

您需要'cd'回到父目錄或使用'pushd' /'popd'(或一個子shell)。 – 2010-08-29 21:46:06

+0

hi maxschlepzig我回復了你的問題。 網站不允許長時間回覆,所以我更新了上面的主要問題。 – farneville 2010-08-30 05:39:39

+0

@丹尼斯威廉姆森:由於腳本只是一個腳手架,CD ..和其他東西被遺漏了。 @farneville:我更新了我的答案,以顯示如何重命名提取的文件。 – maxschlepzig 2010-08-30 09:25:40