我需要列出至少两个字符长且前两个字符中没有以下字母的文件名。字母是 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]'