【问题标题】:SSH unzip BUT with CASE-SENSITIVITYSSH 解压缩但区分大小写
【发布时间】:2014-11-11 07:05:55
【问题描述】:

我正在尝试通过 SSH 解压缩文件,我需要区分大小写的解压缩。

我的服务器使用的是 Debian Unzip 6。

它不应该这样做,但它会将我所有的文件名都转换为小写,导致我的 Joomla 网站崩溃。

如果我想在有生之年完成,有太多文件需要手动重命名或 FTP。

我有一个名为 bv2.zip 的 zip 文件放在我要提取的目录中...

我已经 cd'd 进入我的目录并简单地发出: unzip bv2.zip .... 文件名全部变为小写...

我也尝试过绝对路径无济于事,解压缩帮助和手册指出此版本默认启用区分大小写,但显然不是...

有什么想法吗??

【问题讨论】:

  • 使用“unzip bv2.zip”会出现什么错误?
  • 对不起,不是错误,只是我在尝试解压缩时提到的不区分大小写的行为
  • 您的原始文件系统是什么?如果 OSX 可能是问题,因为 OSX 的文件系统不区分大小写。
  • debian - unix web 服务器(当然是区分大小写的操作系统)
  • 我同意@thenetimp,问题似乎与原始操作系统有关,zip 文件本身必须只包含小写文件名。

标签: ssh case-sensitive unzip


【解决方案1】:

unzip -v file.zip 显示什么?文档说

默认解压列表和 完全按照存储的方式提取此类文件名(除了 截断、转换不支持的字符等)

值得检查它们的存储方式。如果创建 zip 程序将它们全部存储为小写,那么您需要寻找一种方法来实际存储未更改的文件名。

最后,为了确定,检查您的 Debian 服务器上没有别名或环境变量强制使用 -L 选项。查看以下命令的输出,在 Debian 服务器的终端上运行:

alias

(解压应该没有奇怪的别名)

echo $UNZIP

(此环境变量中包含的任何标志都将被 unzip 使用,就好像它们已添加到命令调用中一样)。

【讨论】:

  • 你知道了,伙计.... 网络托管公司,在其中设置了一个别名:别名 unzip='unzip -L'
  • 对于任何一直在寻找解决方案的人,我使用 \unzip example.zip 取代了我的托管公司的别名
【解决方案2】:

我在 1&1 托管中遇到了同样的问题。我已经通过定义一个新的别名来解决它,输入:

alias unzip='unzip'

问题是解压缩 -L 被别名。

现在我已经解压了 prestashop 备份,它的工作原理就像一个魅力

问候

【讨论】:

  • 谢谢!!这让我发疯了!
  • 我很高兴能有用
【解决方案3】:

您确定您的 .zip 文件的名称以小写开头吗?也许您用来创建 zip 文件的任何程序都将名称转换为小写。

【讨论】:

  • 只是Win7自带的zip功能,原文件def有大写部分的名字,zip里面的文件也是这样
  • 哦,我永远不会相信 Windows 会做正确的事。如果一切都失败了,我会尝试另一个 zip 实用程序。不能推荐一个,因为我对 Windows 不太熟悉;对不起。
【解决方案4】:
  1. “-L”(将所有文件名转换为小写)和“U”(将所有文件名转换为大写)选项控制此行为:

http://www.mkssoftware.com/docs/man1/unzip.1.asp

  1. 仅当 .zip 中的文件来自不区分大小写的文件系统(如 MS-DOS 或 VAX/VMS)时才会出现问题。如果文件在任何现代文件系统(Unix、MacOS、Windows 95 或更高版本)上使用任何现代版本的 Zip 或 WinZip 进行 .zip 压缩,这不会成为问题。

呜呜呜……

  1. 有没有可能这些是 DOS 文件?

    或者您是否使用了 DOS 版本的 PKZip?

    或者文件只是以小写开头?

【讨论】:

  • 小心。他正在使用 unzip 6.0,对此 -U 有不同的行为。您引用的手册页甚至说“(已过时;将在将来的版本中删除)”
猜你喜欢
  • 2018-05-05
  • 2018-08-30
  • 2018-03-11
  • 1970-01-01
  • 1970-01-01
  • 2023-02-26
  • 1970-01-01
  • 1970-01-01
  • 2019-03-02
相关资源
最近更新 更多