当我使用tar -xzf *.gz来提取当前目录中的所有.gz个文件时,我得到了Not found in archive个错误.然而,如果我一个接一个地提取或使用类似for循环的

for file in `ls *.gz`; do tar -xzf $file; done

这个错误的原因是什么?

推荐答案

当你写作时:

tar -xf *.gz

tar命令可以看到(例如):

tar -xf abc.tar.gz def.tar.gz ghi.tar.gz

这被解释为从档案abc.tar.gz中提取def.tar.gzghi.tar.gz的请求.因为文件不在里面,你会收到警告信息.

换句话说,tar一次(在一次调用中)操作一个tar文件(可能是压缩的).它不在多个tar文件上运行.

请注意,如果abc.tar.gz包含文件pqr/xyz/important.c,则可以通过指定以下内容仅提取一个文件:

tar -xf abc.tar.gz pqr/xyz/important.c

您使用的符号只是这个符号的变体.

(是的,tar文件可能是有原因的.例如,Gmail不允许你发送一个tar文件或一个包含可执行文件的gzip tar文件.但是,如果你将一个gzip tar文件嵌入一个非压缩tar文件中,它不会在内部文件中查找可执行文件.我需要发送一个带有可执行脚本的tar文件.)

Linux相关问答推荐

当页面对齐关闭时,x86—64上的对象中的成员初始化器的Clang代码生成错误?

没有发现运行时依赖关系,但它在S的运行时路径中有吗?

通过shell 脚本基于AM/PM对日期时间字段进行排序

将十六进制文件名转换为十进制

从 MariaDB 连接到 Oracle 时出现错误消息libsqora.so.11.1:找不到文件

如何拆分和计算 Bash 中单词的出现次数?

如何更改文件的上次访问/修改/更改日期?

如何在bash中用另一个整数变量增加一个整数变量?

更改 awk 中的上一个重复行

最小的 x86_64 Hello World ELF 二进制文件是什么?

使用带有 gnome-keyring 的 Git 凭证助手作为 Sudo 时出错

tmux:挂起不加载,不响应任何选项命令

使用 gdb 将地址转换为行

如何判断 Ubuntu 12.04 LTS 上是否安装了多个版本的 PHP?

在 Node.JS 中引用相对于应用程序根目录的文件的正确方法

发出信号并中断比较

Supervisord - 将进程标准输出重定向到控制台

在 Python 中删除 Root 权限

如何使用终端打开-虚线文件名?

sed - 如何使用 sed 进行正则表达式组