0

此脚本列出了包含模式的文件名(在 tar 存档中)。

tar tf myarchive.tar | while read -r FILE
do
    if tar xf test.tar $FILE  -O | grep "pattern" ;then
        echo "found pattern in : $FILE"
    fi
done

我的问题是:

此功能在哪里记录,其中 $FILE 是存档中的文件之一:

tar xf test.tar $FILE
4

1 回答 1

2

这通常记录在手册页中,请尝试运行以下命令:

man tar

不幸的是,Linux 没有最好的手册页集。此操作系统有一份 tar 联机帮助页的在线副本:http: //linux.die.net/man/1/tar,这很糟糕。但它链接到info man命令,该命令是访问 GNU 世界中广泛使用的“信息”系统的命令(Linux 用户空间中的许多程序来自 GNU 项目,例如 gcc)。有一个info tar关于提取特定文件的在线部分的确切链接:http ://www.gnu.org/software/tar/manual/html_node/extracting-files.html#SEC27

我还可以推荐来自 BSD(例如 FreeBSD)或 opengroup.org 的文档。实用程序可能在细节上有所不同,但总体上表现相同。

例如,来自 opengroup 的一些相当老但很好的人(XCU 表示Single UNIX Specification , Version 2, 1997 的“命令和实用程序”): http: //pubs.opengroup.org/onlinepubs/7908799/xcu/tar .html

焦油键 [文件...]

支持以下操作数:

key -- 键操作数由一个函数字母组成,后跟零个或多个修改字母。函数字母是以下之一:

x -- 从存档中提取一个或多个命名文件。如果命名文件匹配其内容已写入存档的目录,则(递归)提取该目录。如果归档中的命名文件在系统上不存在,则使用与归档中相同的模式创建文件,除了不设置 set-user-ID 和 set-group-ID 模式,除非用户有适当的特权。如果文件存在,则它们的模式不会改变,除非如上所述。恢复所有者、组和修改时间(如果可能)。如果没有给出文件操作数,则提取档案的全部内容。请注意,如果存档中有多个同名文件,则最后一个文件会覆盖所有较早的文件。

要完全理解命令tar xf test.tar $FILE,您还应该阅读有关f选项:

f -- 使用第一个文件操作数(或第二个,如果 b 已经指定)作为存档的名称,而不是依赖于系统的默认值。

因此,test.tar在您的命令中将f按键用作存档名称;然后 x 将使用第二个参数 ( $FILE) 作为文件或目录的名称以从存档中提取。

于 2012-10-24T00:54:19.333 回答