2016-11-18 62 views
-1

如何解壓.gz指定文件夾中沒有刪除的所有檔案?如何不刪除gunzip?

我想:gunzip *.gz /folder

+0

運行'man gunzip'並閱讀。 –

+4

我正在投票結束這個問題,因爲它與編程無關。 – PeeHaa

+0

我試過'man gunzip'獲得很多參數 – Goga

回答

0

可以使用gzip--stdout選擇一些bash腳本來完成,並使用bash替代計算未壓縮名稱:

for i in *.gz 
do 
    echo unzipping $i to /folder/${i/.gz} 
    gunzip --stdout "$i" > "/folder/${i/.gz}" 
done 

目前執行失敗,包含文件名的空格

+0

爲什麼你再次解壓到'gz'? – Goga

+0

我不知道。這是對'.gz'擴展名的替換。 –

+0

附近出現意外標記'語法錯誤' – Goga

0
find /source/dir/ -type f -name '*.gz' \ 
    -exec bash -c 'gunzip -c "$0" > "/folder/${0%.gz}"' {} \; 

該命令找到全部*.gz文件在/source/dir/目錄中,併爲每個文件執行一個bash命令。 bash命令將文件($0)解壓縮到標準輸出並將結果重定向到"/folder/${0%.gz}"。後者是"/folder/"字符串與文件名連接,不帶.gz擴展名。 ${0%.gz}表達式從字符串(路徑)的後面移除.gz的最短匹配。

而且{}序列被替換下一個gzip壓縮文件的路徑。它作爲第一個參數傳遞給bash命令($0)。

如果源目錄是當前目錄,則用點(.)替換/source/dir/

0

您可以簡單地使用man中指定的-k選項。

-k --keep 
     Keep (don't delete) input files during compression or decompression. 

例如,如果您使用

gunzip -k my_file.gz 

my_file.gz不會壓縮或解壓縮後刪除命令。

+0

OP也想將未壓縮的文件移動到另一個目錄中 –

+0

好的,所以他可以使用tar而不是gzip或gunzip。 – Nic0

+0

使用焦油žfile.gz -C /目標/路徑 – Nic0