此脚本列出了包含模式的文件的名称(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 Manpage:http://linux.die.net/man/1/tar,这很糟糕。但是它链接到info man
命令,该命令是命令访问GNU世界中广泛使用的"信息"系统(Linux用户空间中的许多程序都来自GNU项目,例如GCC)。在线info tar
的部分链接有关提取特定文件:http://www.gnu.org/software/tar/manual/manual/html_node/extracting-files.html#sec27
i也可能建议来自BSD(例如FreeBSD)或OpenGroup.org的文档。公用事业可能会有所不同,但通常行为相同。
例如,有一些来自OpenGroup的旧但好人(XCU表示 Single Unix规范的"命令和实用程序" ,版本2,1997):http://pubs.opengroup.org/onlinepubs/7908799/xcu/tar.html
tar键[文件...]
支持以下操作数:
键 - 密钥操作数由一个功能字母组成,然后立即进行零或更多修改字母。功能字母是以下内容之一:
X - 从存档中提取命名的文件或文件。如果命名文件匹配已写入档案中的内容的目录,则该目录已(递归)提取。如果存档中的命名文件在系统上不存在,则该文件的创建与档案中的模式相同,除非设置set-user-id和set-group-id模式,除非用户被设置具有适当的特权。如果存在文件,则除了上述所述,它们的模式不会更改。所有者,组和修改时间将恢复(如果可能的话)。如果没有给出文件操作数,则提取存档的全部内容。请注意,如果几个具有相同名称的文件在存档中,则最后一个覆盖所有早期的文件。
和充分理解命令tar xf test.tar $FILE
您还应该阅读有关f
选项的信息:
f - 使用第一个文件操作数(或第二个文件,如果已经指定了b)作为存档的名称,而不是依赖系统依赖的默认值。
因此,您的命令中的test.tar
将由f
键用作存档名称;然后,X将使用第二个参数($FILE
)作为文件或目录的名称来从存档中提取。