2

当我mdls -name kMDItemFSName -name kMDItemDateAdded -raw *在包含目录的文件夹中运行 zsh 时- Java Code,我收到以下错误:

mdls: unrecognized option `- Java Code'

我怎样才能解决这个问题?我尝试使用"*",但它根本没有 glob。

4

1 回答 1

3

问题是因为-其中一个目录中的选项。通常命令行标志在-. 一个文件夹名称-Java Code被视为一个这样的标志来mdls命令它不喜欢。通常我们提供一个命令行标志分隔符的结尾,通过提供一个--shell 意识到不需要更多的命令行标志。

mdls -name kMDItemFSName -name kMDItemDateAdded -raw -- *

这样,由于我们发出命令行标志已完成的信号,因此-应该正确解析包含前导的文件夹名称。

这个问题是一个经常发生的问题,可以通过一个简单的mv命令简单地重现,并创建一个包含 a-的文件,当尝试移动文件时,该命令将失败。它需要通过做来修复mv --

大多数 shell 内置命令和 GNU 工具都支持此选项。POSIX 也建议这样做。从他们的指导方针之一中看到它。请参阅POSIX 实用程序约定 - 指南 10

于 2018-08-03T06:38:48.293 回答