在 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_GLOB
和 NO_BARE_GLOB_QUAL
选项用 setopt
) 和 ksh93
:
打开
$ ls !(*b*)
a c
如何获取没有特定字符 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_GLOB
和 NO_BARE_GLOB_QUAL
选项用 setopt
) 和 ksh93
:
$ ls !(*b*)
a c