此脚本列出包含模式的文件名(在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
答案 0 :(得分:2)
这通常记录在手册页中,尝试运行此命令:
man tar
不幸的是,Linux并没有最好的手册页。这个操作系统有一个tar联机帮助页的在线副本:http://linux.die.net/man/1/tar,这很糟糕。但它链接到info man
命令,这是命令访问GNU世界中广泛使用的“info”系统(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的'Commands and Utilities'): http://pubs.opengroup.org/onlinepubs/7908799/xcu/tar.html
tar key [file ...]
支持以下操作数:
密钥 - 键操作数由一个函数字母组成,后面紧跟零个或多个修改字母。功能字母是以下之一:
x - 从存档中提取指定的文件。如果命名文件与其内容已写入存档的目录匹配,则(递归)提取此目录。如果存档中的命名文件不存在于系统中,则使用与存档中的文件相同的模式创建文件,但除非用户设置了set-user-ID和set-group-ID模式。有适当的特权。如果文件存在,则除了如上所述之外,它们的模式不会改变。将恢复所有者,组和修改时间(如果可能)。如果未给出文件操作数,则提取存档的全部内容。请注意,如果存档中有多个具有相同名称的文件,则最后一个文件将覆盖所有早期文件。
要完全理解命令tar xf test.tar $FILE
,您还应该阅读f
选项:
f - 使用第一个文件操作数(或第二个,如果已经指定了b)作为存档的名称而不是系统相关的默认值。
因此,命令中的test.tar
将被f
密钥用作存档名称;然后x将使用第二个参数($FILE
)作为要从存档中提取的文件或目录的名称。