在 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]
并将其作为通配符处理,意思是“或者H
” D
。因此,它将尝试提取两个文件:
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$