此脚本列出了包含模式的文件名(在 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
这通常记录在手册页中,请尝试运行以下命令:
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
) 作为文件或目录的名称以从存档中提取。