我是 Linux 新手,想知道是否可以通过赋予新名称或路径来提取特定文件或目录。例如,如果我的存档包含文件夹 sample1、sample2 和 sample3,我希望能够将 sample3 提取为 sample4。同样的问题也适用于文件。
答案1
有两种方法可以完成此任务。
tar 有一个
-s
选项,定义如下:-s 模式
根据模式修改文件或档案成员名称。模式的格式为 /old/new/[gps]。old 是基本正则表达式。如果不适用,则跳过该模式。new 是匹配部分的替换字符串。~ 用匹配项替换,1 到 9 用相应捕获组的内容替换。可选尾随 g 指定匹配应在匹配部分之后继续,并在第一个不匹配的模式处停止。可选尾随 s 指定模式适用于符号链接的值。可选尾随 p 指定成功替换后,原始路径名和新路径名应打印到标准错误。
您可以运行
tar xf <archive file> -s /sample3/sample4/
以达到您想要的结果。tar 可以将文件直接提取到标准输出,之后你可以使用标准 Unix 文件重定向操作将输出放入任意名称的文件中。
例子:
tar xf <archive file> -O sample3 > sample4
请注意,“sample3”文件名不是参数的参数
-O
;它被 tar 用来限制仅提取该文件。如果您未指定sample3
,则 tar 将提取存档中的每个文件并将它们集中到一个大的未压缩输出文件中。