无需解压缩即可访问压缩文件
Access to zipped files without unzipping them
我有一个包含 tar.gz 文件的 zip 文件。我想访问 tar.gz 文件的内容但不解压缩它
我可以列出 zip 文件中的文件,但当然在尝试解压缩其中一个文件时 bash 说:"Cannot open: No such file or directory" 因为该文件不存在
for file in $archiveFiles;
#do echo ${file: -4};
do
if [[ $file == README.* ]]; then
echo "skipping readme, not relevant"
elif [[ $file == *.tar.gz ]]; then
echo "this is a tar.gz, must extract"
tarArchiveFiles=`tar -tzf $file`
for tarArchiveFile in $tarArchiveFiles;
do echo $tarArchiveFile
done;
fi
done;
是否可以在不临时存储的情况下提取它"on the fly"。我觉得这在 python
中是可行的
你不能不解压缩(显然),但我假设你的意思是,不解压缩到文件系统。
unzip
有 -c
和 -p
选项,它们都解压缩到标准输出。 -c
输出文件名。 -p
只是将二进制解压缩文件数据转储到标准输出。
所以:
unzip -p zipfile.zip path/within/zip.tar.gz | tar zxf -
或者如果您想列出 tarfile 的内容:
unzip -p zipfile.zip path/within/zip.tar.gz | tar ztf -
如果您不知道 zip 文件中 tar 文件的路径,您需要编写一些更复杂的东西来使用 unzip -c
的输出,识别输出中的文件名行。在这种情况下,最好用 "proper" 语言写一些东西。 Python有一个非常灵活的ZipFile
库函数,大多数主流语言都有类似的东西。
您可以使用 -p
选项将 zip 文件的单个成员通过管道传输到标准输出
在您的代码更改中
tarArchiveFiles=`tar -tzf $file`
到
tarArchiveFiles=`unzip -p zipfile $file | tar -tzf -`
将 "zipfile" 替换为您从
中获取 $archiveFiles
的 zip 存档的名称
我有一个包含 tar.gz 文件的 zip 文件。我想访问 tar.gz 文件的内容但不解压缩它
我可以列出 zip 文件中的文件,但当然在尝试解压缩其中一个文件时 bash 说:"Cannot open: No such file or directory" 因为该文件不存在
for file in $archiveFiles;
#do echo ${file: -4};
do
if [[ $file == README.* ]]; then
echo "skipping readme, not relevant"
elif [[ $file == *.tar.gz ]]; then
echo "this is a tar.gz, must extract"
tarArchiveFiles=`tar -tzf $file`
for tarArchiveFile in $tarArchiveFiles;
do echo $tarArchiveFile
done;
fi
done;
是否可以在不临时存储的情况下提取它"on the fly"。我觉得这在 python
中是可行的你不能不解压缩(显然),但我假设你的意思是,不解压缩到文件系统。
unzip
有 -c
和 -p
选项,它们都解压缩到标准输出。 -c
输出文件名。 -p
只是将二进制解压缩文件数据转储到标准输出。
所以:
unzip -p zipfile.zip path/within/zip.tar.gz | tar zxf -
或者如果您想列出 tarfile 的内容:
unzip -p zipfile.zip path/within/zip.tar.gz | tar ztf -
如果您不知道 zip 文件中 tar 文件的路径,您需要编写一些更复杂的东西来使用 unzip -c
的输出,识别输出中的文件名行。在这种情况下,最好用 "proper" 语言写一些东西。 Python有一个非常灵活的ZipFile
库函数,大多数主流语言都有类似的东西。
您可以使用 -p
选项将 zip 文件的单个成员通过管道传输到标准输出
在您的代码更改中
tarArchiveFiles=`tar -tzf $file`
到
tarArchiveFiles=`unzip -p zipfile $file | tar -tzf -`
将 "zipfile" 替换为您从
中获取$archiveFiles
的 zip 存档的名称