我们在 CentOS 7.9 上使用 tar 1.26,我试图解压一个包含以连字符开头的文件的存档。
我通过 tar 告诉--files-from
我要提取哪些文件,因为我不想提取所有内容。
filelist.txt
为此,我有包含以下内容的文件
-myfile.txt
调用 tar liketar -xmf mytar.tar --no-wildcards --files-from filelist.txt
会导致 tar 出错并出现以下错误
tar: invalid option -- 'y'
这是因为 tar 将起始连字符解释为 tar (我假设)的参数,
我已经添加了--no-wildcards
以禁用模式匹配。
是否有可能禁用此行为,或者更好地告诉 tar 从filelist.txt
字面上获取每个条目而不尝试匹配/解释任何内容?
答案1
tar
如果可以选择升级到 GNU 1.29 或更高版本,则该--verbatim-files-from
开关提供您似乎正在寻找的功能。引用手动的:
--verbatim-files-from
将从文件列表中获取的每一行视为文件名,即使它以破折号开头。文件列表由--files-from
( ) 选项提供-T
。默认行为是处理文件列表中提供的名称,就像在命令行中键入它们一样,即任何以破折号开头的名称都被视为tar
选项。该--verbatim-files-from
选项禁用此行为。
不幸的是,--verbatim-files-from
在 GNU 1.26 中不可用tar
。