iT邦幫忙

0

Linux shell批次解壓縮語法

  • 分享至 

  • xImage

如果要抓某個目錄下的所有壓縮檔,解壓縮後放到另個目錄下,該怎麼寫呢?

dragonH iT邦超人 5 級 ‧ 2020-06-10 23:16:25 檢舉
1. 取得所有檔案
2. unzip
3. 移到你要的地方

23 應該可以一行解決
用米字號應該可以吧
test121 iT邦新手 5 級 ‧ 2020-06-11 09:27:24 檢舉
感謝回覆
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

0
一級屠豬士
iT邦大師 1 級 ‧ 2020-06-11 08:01:59
unzip '*.zip'

指定目錄,這個就自己補上. 你還要想一下,壓縮檔裡面會不會有重複出現的,那樣會詢問的,
所以看是要 跳過, 還是每個壓縮檔都要有子目錄.

test121 iT邦新手 5 級 ‧ 2020-06-11 09:25:49 檢舉

重複出現確實會詢問,這部份我要再釐清一下,謝謝。

使用 man unzip 看手冊就有參數選項說明了.

5
japhenchen
iT邦超人 1 級 ‧ 2020-06-11 08:02:12

一行

sudo find /whereyourtar -name '*.tar.gz' -exec tar -xzvf {} --directory /whereyouwantuntar \;

打完收工

看更多先前的回應...收起先前的回應...

unzip 也是一樣,只是把 tar -xzvf 換成 unzip ,{}就是find到的檔案(一堆一樣解),記得後面加 ;

/whereyourtar → 你放壓縮檔的資料夾
/whereyouwantuntar → 你要解開壓縮檔後放置的資料夾

我喜歡用TAR壓縮,因為他會原樣打包,原樣解包,檔案屬性跟所有者都會留下,中文也不會出錯

test121 iT邦新手 5 級 ‧ 2020-06-11 09:26:53 檢舉

感謝,來研究試試。

vin iT邦新手 5 級 ‧ 2020-07-03 12:06:32 檢舉

想請問一下路徑的部分,若壓縮檔分別在各自的目錄,有辦法批次解壓縮後,檔案在各自的目錄下嗎?謝謝!

可以啊,只要在 {} 後面加上 ./ 即可

vin iT邦新手 5 級 ‧ 2020-07-03 14:26:57 檢舉

感謝您的回覆~
但我有試過./,卻出現錯誤,不知道是指令哪裡出錯
https://ithelp.ithome.com.tw/upload/images/20200703/20113745xQMOqsB8O2.png

vin iT邦新手 5 級 ‧ 2020-07-03 14:34:13 檢舉

./前面加上-C,是解壓縮到自己所在的當前目錄

find /whereyourtar -name '*.tgz' -exec tar -zxvf {} -C ./ \;

...............咦

咦,我有加 --directory 啊...... 那個就是 -C (同義)
https://ithelp.ithome.com.tw/upload/images/20200703/20117954TBXlZTvO00.jpg

vin iT邦新手 5 級 ‧ 2020-07-03 15:00:37 檢舉

剛剛才解壓完發現-C和--directory都是解壓縮到我當前所在的目錄呢...

vin
哈失誤失誤~~~

把參數改一下, -exec 改成 -execdir ,後面的-C或--directory 就免了

sudo find /whereyourtar -name '*.tar' -execdir tar -xvf {}  \;
vin iT邦新手 5 級 ‧ 2020-07-03 16:05:34 檢舉

太感謝您了~這真的幫了很大的忙!!!

tar -cvf 並不帶壓縮,只打包,如果要壓縮或解壓縮,加個z

tar -czvf 及 tar -xzvf
打包壓縮檔名我會習慣加個.gz
abc.tar.gz

我要發表回答

立即登入回答