2016-08-21 82 views
0

摘要
我需要「修復」一批.zip文件,整個文件系統,通過:如何將文件解壓並重新壓縮到與.zip文件同名的子目錄中?

  • 更換「」在他們的名字(空間)一個「_」 ,以及在他們的內容文件的名稱
  • 重新壓縮回

在解壓縮,因爲‘$(目錄名稱‘$ 0’)/ $(名前綴‘$ 0’)’引發錯誤卡住。

更長的desc。
文件層次:

banners/ 
     | 
     germany/ 
     |  | 
     |  active/ 
     |  |  | 
     |  |  300x250/ 
     |  |  |  | 
     |  |  |  file.jpg 
     |  |  |  AC2 xx.zip 
     |  |  | 
     |  |  600x228/ 
     |  |   | 
     |  |   file.jpg 
     |  |   AC4 xx.zip 
     |  nautics/ 
     | 
     | 
     austria/ 
     | 
     ... 

這是我的嘗試:

~/banners/> find . -name "*" -exec sh -c 'mv -- "$0" "$(0// /_)"' {} \; 

在這裏我得到了所有的文件名/目錄名去掉所有的空格,從banners/向下。
AC2 xx.zip現在看起來像AC2_xx.zip

我現在需要將這些.zip文件解壓縮到一個新的子目錄,在爲.zip文件本身同一水平線上,命名一樣,這些.zip文件。

這裏是我試過的命令:這給了我這樣一個錯誤的一堆(全屏幕)

find . -name "*.zip" -exec sh -c 'unzip "$0" "$(dirname "$0")/$(basename "$0")"' {} \; 

〜>存檔:./sun &海/ dugi_otok/970x250的/ SS4_970x250.zip
〜>注意:文件名不匹配:./sun &海/ dugi_otok/970x250的/ SS4_970x250.zip

對於我的生活,我無法弄清楚這一點。

重辦刪除空格
如果我得到這個工作和文件解壓縮,該計劃是從頂層目錄banners/再次重新運行mv命令,並再次用替換空格「_」 。這照顧了.zip文件的內容。

重新拉鍊
最後,我需要重新壓縮這些新創建子目錄,命名爲原來的.zip文件並覆蓋現有的.zip文件(即最初解壓縮)。

基本上重新拉鍊這樣的:

~> banners/germany/active/dugi_otok/300x250/AC2_xx/(newly unzipped contents) 

到:

~> banners/germany/active/dugi_otok/300x250/AC2_xx.zip 

我的困惑表示歉意,但我找不到更好的辦法來解釋這個問題。

+0

爲什麼添加標籤[baseline]? – Armali

回答

0

basename不會刪除擴展,使您:

"$(dirname "$0")/$(basename "$0")" 

只是重現$0。替換:

"$(dirname "$0")/$(basename -s ".zip" "$0")" 

-s選項basename去掉後綴

HTH

0

我現在需要將這些.zip文件解壓縮到一個新的子目錄,同時 水平爲.zip文件本身,與這些.zip 文件命名相同。

unzip選項-d適合這個:

find . -name "*.zip" -exec sh -c 'unzip "$0" -d "${0%.zip}"' {} \; 

隨着你試過的unzip第二個參數被看作是一個文件,從zip文件中提取的名稱的命令,當然沒有在其中找到。

相關問題