在 shell 上列出名称中没有特定字符的文件

Listing files without specific character in name on shell

如何获取没有特定字符 f 的目录列表。前任。 “p” 我试过了: ls *[!p]* 但是"p"可以出现在*中,这个选项没用

你不能那样使用通配符。也不要尝试用 grep -v 解析 ls,永远不要解析 ls 输出(包含空格、特殊字符和换行符的文件名)。
根据 find 的版本,您可以使用

find * -maxdepth 0 ! -name "*p*"

取决于您的 shell。许多常见的支持否定模式作为 POSIX glob 语法的扩展。

给定:

$ ls
a  b  c

zsh(如果尚未启用,则需要使用 setopt 打开 EXTENDED_GLOB 选项)和 tcsh:

$ ls ^*b*
a  c

bash(如果尚未启用,则需要使用 shopt 打开 extglob 选项),zsh(需要 KSH_GLOBNO_BARE_GLOB_QUAL 选项用 setopt) 和 ksh93:

打开
$ ls !(*b*)
a  c