取消归档单个文件挂起

取消归档单个文件挂起

我正在尝试取消归档一个非常大的目录。以下是解压整个内容的方法:

$ 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将是选项的参数-fitunes20140618/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 archiverbzip2压缩它们。

例如,使用 tar 归档文件集合,然后使用 gzip 压缩生成的归档文件会生成扩展名为 .tar.gz 的文件。

但这种方法有一个缺点,正如 wiki 文章中所述:

提取或修改一个文件是很困难的。提取一个文件需要解压缩整个存档,这可能非常耗时和空间。

因此,如果您经常提取单个文件,我的建议是仅使用.taror.zip或。.rar

相关内容