我是 linux 新手,我正在嘗試以下操作:
我有目錄資料。在這個目錄中有 x 個以 *.tgz 結尾的檔案。我想解壓每個,并將輸出存盤在一個新檔案夾中。舉個例子。我開始:
ls data
folder_a.tgz folder_b.tgz folder_c.tgz
我想結束:
ls /data/test/
folder_a folder_b folder_c
我嘗試了以下方法:
ls *.tgz | xargs -n1 tar zxvf -C /data/test/
這給出了錯誤:
-C cannot open: no such file or directory
我不明白為什么這不起作用,因為它們都按預期作業:
tar zxvf folder_a.tgz -C /data/test/
ls *.tgz | xargs -n1 tar zxvf
但是將這些結合起來是行不通的。誰能幫助我實作目標,也許可以解釋為什么我的解決方案不起作用?
uj5u.com熱心網友回復:
您的問題是 xargs 將引數放在最后,但 tar 需要f標志后面的檔案名。以下應該有效:
ls *.tgz | xargs -n1 tar zxv -C /data/test/ -f
但也許在這里使用回圈將是更好的解決方案:
for ARCHIVE in *.tgz; do tar xvzf "$ARCHIVE" -C /data/test; done
或者:
ls *.tgz | while read ARCHIVE; do tar xvzf "$ARCHIVE" -C /data/test; done
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/505642.html
標籤:linux
