代码之家  ›  专栏  ›  技术社区  ›  HappyFace

全局处理zsh中包含破折号的文件名时出现分析错误

  •  2
  • HappyFace  · 技术社区  · 6 年前

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

    mdls: unrecognized option `- Java Code'

    我该怎么解决?我试着用 "*" ,但它一点也不全球化。

    1 回复  |  直到 6 年前
        1
  •  3
  •   Inian    6 年前

    问题是因为 - 其中一个目录中的选项。通常命令行标志在 - . 文件夹名为 -Java Code 被视为 mdls 它不喜欢的命令。通常,我们通过提供 -- 在此基础上,shell意识到不再需要命令行标志。

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

    这样,因为我们发出了命令行标志已完成的信号,所以包含前导的文件夹名 - 应该正确分析。

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

    大多数shell内置命令和GNU工具都支持此选项。POSIX也建议这样做。从他们的指导方针中看出来。见 POSIX Utility Conventions - Guideline 10