列出前两个字符中不包含某些字母的文件

列出前两个字符中不包含某些字母的文件

我需要列出至少两个字符长且前两个字符中没有以下字母的文件名。字母是 abcfghxyz

到目前为止我有:

ls | grep -v '^[abcfghxyz]'

这是检查文件开头是否不包含其中一个字母。

但是如何检查前两个字符和至少两个字符长的文件。

答案1

你甚至不需要grep这个:

ls -1d [^abcfghxyz][^abcfghxyz]*

这使用ls's-1选项每行获取一个文件名而不是列式输出,并使用该-d选项停止ls列出与 glob 匹配的任何子目录的内容。

另一种选择是使用find(以便您可以明确地将输出限制为常规文件,而不是目录或符号链接等):

find . -maxdepth 1 -type f -name '[^abcfghxyz][^abcfghxyz]*'

答案2

ls | grep .. | grep -v '^[abcfghxyz][abcfghxyz]'

相关内容