2017-07-23 44 views
-3

我是新來的工作在shell中,可以使用unrar命令來提取單個存檔,但我期待着做更多的事情。讓我解釋。檔案提取腳本

例:

/ParentFolder/ChildFolder1/xyz.rar 

/ParentFolder/ChildFolder2/abc.rar 

/ParentFolder/ChildFolder3/rty.rar 

/ParentFolder/ChildFolder4/wqe.rar 

每個子文件夾有不同的名稱,每個都包含不同的命名檔案。我想構建一個腳本,它將提取每個子文件夾內的存檔,並將提取的文件重命名爲與該文件夾相同的名稱。

獎勵:每個孩子文件夾中有列出像

archivename.r01 

archivename.r02 

archivename.rar 

如果它可以刪除提取後整個歸檔結構將是驚人的檔案。

希望我解釋得很好。提前致謝!

+5

您應該先嚐試一些事情,並解釋您遇到的問題,否則這個問題聽起來像是某人要求進行免費腳本開發的請求。 –

+0

你的「輸入」例子非常好(即'/ParentFolder/ChildFolder1/xyz.rar .....')。編輯你的Q以顯示你想要的最終輸出結果,然後我們不會猜測你的意思。祝你好運。 – shellter

回答

0
find /ParentFolder -name "*.rar" -exec unrar '{}' \; 

查找目錄結構和unrar中的所有存檔文件。

find /ParentFolder ! -name "*.rar" | awk -F \/ '{ split($4,fle,".");system("mv "$0" "$2"/"$3"/"$3"."fle[2]) }' 

假設有在目錄結構中沒有其他的文件已經,未存檔的文件將無法與RAR擴展名的文件,並通過AWK所以找了所有這些文件,而無需RAR的擴展和管道的結果,使用系統函數用mv重命名文件。

find /ParentFolder -name "*.rar" -exec rm -f '{}' \; 

最後對所有rar文件運行find命令並運行rm -f命令將其刪除。

+0

非常感謝!你的第一個我只需要在unrar旁邊添加一個「x」並完成它的工作! –