我正在嘗試取消歸檔一個非常大的目錄。以下是解壓縮整個內容的方法:
$ sudo tar -xjf itunes20140618.tbz --verbose
x itunes20140618/
x itunes20140618/genre_artist
x itunes20140618/imix_type
...etc...
但是,如果我嘗試僅取消存檔一個文件,它會正確執行此操作,但命令將無限期掛起。此外,使用 --verbose 語句時它不會列印任何輸出。這是一個例子:
$ sudo tar -xjf itunes20140618.tbz itunes20140618/imix --verbose
[ nothing prints...it just hangs. But it does un-tar that single file ]
答案1
不要在非選項參數之後指定選項,尤其是tar
它是一個非標準命令,其多種實作支援多種古老和較新的方法來解析選項、操作和參數。
在:
tar -xjf itunes20140618.tbz itunes20140618/imix --verbose
itunes20140618.tbz
將是選項的參數-f
,itunes20140618/imix
一個額外的非選項參數,用作從存檔中提取的成員的名稱。是否--verbose
被視為額外參數(要提取的另一個成員的名稱)或選項將取決於其實作和版本,tar
甚至可能取決於它的編譯方式或執行時間環境。
就您而言,您很可能是那些不將其視為全域選項的tar
人(大多數)之一。--verbose
在這裡,使用:
tar -xjf itunes20140618.tbz --verbose itunes20140618/imix
或更便攜:
bunzip2 < itunes20140618.tbz | tar xvf - itunes20140618/imix
或tar
用標準替換(儘管便攜性較差)pax
:
bunzip2 < itunes20140618.tbz | pax -vr itunes20140618/imix
答案2
您正在使用的bzip2
不是文件歸檔器所以tar
本質上充當 a file archiver
並bzip2
壓縮它們。
例如,使用 tar 歸檔檔案集合,然後使用 gzip 壓縮產生的歸檔檔案會產生副檔名為 .tar.gz 的檔案。
但這種方法有一個缺點,如 wiki 文章所述:
要提取或修改一個檔案是很困難的。提取一個檔案需要解壓縮整個存檔,這可能非常耗時和空間。
因此,如果您經常提取單個文件,我的建議是僅使用.tar
or.zip
或。.rar