在 zsh 中使用 cut delim

Using cut delim with zsh

我正在清理使用查询缓存字符串下载的文件。这些文件看起来像:

frontend-legacy.min.css?ver=3.2.4.css

运行 我 运行 此代码在 Bash shell 中,它工作正常并从中删除了“?ver=3.2.4.css”文件。

for i in `find ./build  -type f -name "*\?*"`; do mv -f $i `echo $i | cut -d? -f1`; done

运行 我 运行 它在 ZSH shell “cut -d?”正在抛出错误。为什么分隔符在 ZSH 中不起作用?

? 是一个 glob 字符。 -d? 尝试扩展到工作目录中所有以 -d 开头且多一个字母的文件名。如果没有这样的文件,会发生什么取决于你如何配置你的 zsh:它可能会静默地将 -d? 字符串传递给应用程序,或者它可能会输出一条错误消息。

这适用于所有通配符(例如*[)。如果你想按字面意义使用它们,你需要引用或转义它们。例如,写 -d\? 就可以了。