【发布时间】:2014-01-24 00:55:31
【问题描述】:
我有一个使用共享链接(不是公共链接)和 curl 从 Dropbox 下载的文件夹。它以压缩文件夹的形式下载。我需要在 bash shell 脚本中使用 unzip 来解压这个文件夹。每当解压缩文件夹时,我都会收到以下错误:
warning: stripped absolute path spec from /
mapname: conversion of failed
为了确保 curl 不是一个奇怪的问题,我直接从 Dropbox 下载了该文件夹并再次尝试。我得到了同样的错误。所有文件和子目录都出现了,它们的完整性似乎没有任何问题。使用 GUI 解压缩任一文件夹不会导致错误消息。
我运行 unzip -l 并注意到一个奇怪的第一个条目:
Length Method Size Ratio Date Time CRC-32 Name
-------- ------ ------- ----- ---- ---- ------ ----
0 Defl:N 2 0% 01-23-14 19:38 00000000 /
我相信是这个空目录导致了问题。我的问题是,有没有办法忽略这个空目录或抑制错误消息(我试过 -qq 没有运气)?或者,我做错了什么/遗漏了什么?
我在Mac OSX 10.9.1 和Ubuntu Linux (Version Unknown) 上对此进行了测试,结果相同。
编辑:我还用jar xf 对其进行了测试,它运行良好,没有任何错误。运行jar xvf 表明它created: /。我仍然认为是这个空的、未命名的目录导致了这个问题,但我似乎无法正确使用我的语法,以便 unzip 会忽略它。我只会使用 jar,但我需要能够指定输出目录。
【问题讨论】:
-
您可以尝试按名称显式提取存档中的其他文件,例如G。
unzip /path/to/filename.zip filename.ext file2.ext从存档中提取filename.ext和file2.ext。 -
谢谢!我确实考虑过这一点,但是一旦 shell 脚本完成,它将被移交,我将无法维护它。文件夹的内容很可能会发生变化。它实际上以现在的方式运行良好,错误/警告只是烦人,可能会警告最终用户。
-
您可以随时使用
2> /dev/null禁止警告。此外,您可以使用-x作为另一种选择来排除有问题的孩子。 -
我忘记了 /dev/null。我尝试了 -x 选项,但问题子项是一个空目录“/”,我似乎无法让它工作。不过,这可能只是我的语法问题。你会怎么做?
-
将所有输出发送到 null 是否安全?如果发生合法错误怎么办?
标签: bash curl warnings unzip directory-structure