通配符没有按预期工作
Globbing not working as expected
我想列出 zsh
中所有不是 python 脚本的普通文件。
为什么以下 "code" 不起作用,正确的解决方案是什么?
ls -l *(.)~*.py
更新:
我的 .zshrc
中有 setopt extended_glob
。
并且
ls -ld *~*.py``
按预期工作。
(我在命令中添加了 -d
以防止目录被扩展)。
问题是 ~
是一个 glob operator(也需要设置 EXTENDED_GLOB
),而 (.)
是一个 glob qualifier,表示必须加在整个pattern的末尾,不能用在中间。使用
ls *~*.py(.)
相反。也就是说,*~*.py
是您的模式(所有文件不以 .py
结尾),(.)
应用于结果。 (也许另一种说法是 glob 运算符只能在 unqualified 模式上工作。)
我想列出 zsh
中所有不是 python 脚本的普通文件。
为什么以下 "code" 不起作用,正确的解决方案是什么?
ls -l *(.)~*.py
更新:
我的 .zshrc
中有 setopt extended_glob
。
并且
ls -ld *~*.py``
按预期工作。
(我在命令中添加了 -d
以防止目录被扩展)。
问题是 ~
是一个 glob operator(也需要设置 EXTENDED_GLOB
),而 (.)
是一个 glob qualifier,表示必须加在整个pattern的末尾,不能用在中间。使用
ls *~*.py(.)
相反。也就是说,*~*.py
是您的模式(所有文件不以 .py
结尾),(.)
应用于结果。 (也许另一种说法是 glob 运算符只能在 unqualified 模式上工作。)