tar 未提取名称中带有方括号的文件

tar 未提取名称中带有方括号的文件

在 Linux 上,我tar使用以下命令从存档中提取文件

tar -xC / -f /tarFile.tar someFolder/[HD] video1.mp4

这总是可以正常工作,但在文件名包含方括号的情况下则不然。焦油响应为

someFolder/[HD] video1.mp4: not found in archive

如果我删除方括号,文件就可以正常提取。

我已经尝试过使用 转义所有字符\并使用 . 转义周围的文件名'。没有运气。

有什么提示吗?谢谢

答案1

您提供的第一个命令将尝试提取两个或三个文件:

someFolder/H
someFolder/D
video1.mp4

如果将文件名括在单引号 ( ')中,tar程序将看到[HD]并将其作为通配符处理,意思是“或者HD。因此,它将尝试提取两个文件:

someFolder/H video1.mp4
someFolder/D video1.mp4

引用文件名使用该--no-wildcards标志将抑制这些尝试的扩展:

tar -xC / -f /tarFile.tar 'someFolder/[HD] video1.mp4' --no-wildcards

答案2

将方括号替换为通配符(例如?*),例如

tar -x -C/ -v -f tarFile.tar 'someFolder/?HD? video1.mp4'

或者:

tar -x -C. -v -f tarFile.tar 'someFolder/*video1.mp4'

要确认文件名,您可以通过以下方式列出存档文件:

tar -t -f tarFile.tar | grep mp4$

相关内容