我只知道文件名,但不知道它的确切位置。我只想从存档中提取该文件。我需要知道它在档案中的位置。
答案1
unzip
接受通配符和通配符。如果您知道文件名,那么您可以简单地说:
unzip archive.zip "**/file_to_extract"
为了提取所述文件。
答案2
作为评论和答案的综合,您可以像这样进行:
unzip -l archive.zip | grep "nameOfile"
./tmp/nameOffileponey
./ham/smoked/nameOfile
#identify the path of the file precisely in your archive if filtering gives you several result and then use
unzip archive.zip ./ham/smoked/nameOfile
这应该有效
答案3
将 zip 存档挂载为文件系统保险丝拉链。然后您可以使用任何您喜欢的命令访问其中的文件。
mkdir foo
fuse-zip foo.zip foo
needle.txt
然后,从它所在的子目录复制:
find foo -name needle.txt -exec cp -p {} . \;
或者使用 shell 的递归通配符(在 bash 中,您需要shopt -s globstar
先运行;在 zsh 中,这是开箱即用的):
cp -p foo/**/needle.txt .
使用完文件系统后将其卸载。
fusermount -u foo