如何查找所有不以bash中的给定前缀开头的文件?

我在一个文件夹中有一堆文件:

foo_1 foo_2 foo_3 bar_1 bar_2 buzz_1 ... 

我想查找所有以给定前缀开头的文件,并将列表保存到文本文件中。 下面是一个具有给定前缀的文件的例子:

 find bar_* > Positives.txt 

这应该可以在任何shell中做到这一点

 ls | grep -v '^prefix' 

-v选项反转grep的搜索逻辑,使其筛选出所有匹配项。 使用grep而不是find可以使用强大的正则表达式而不是有限的glob模式。

你想找到不是bar_*开头的文件名?

递归:

 find ! -name 'bar_*' > Negatives.txt 

顶层目录:

 find -maxdepth 1 ! -name 'bar_*' > Negatives.txt 

如果你还在做子目录:

 find . ! -name "bar_*" 

使用bash和通配符:ls [!bar _] *。 有一个警告:信件的顺序并不重要,所以rab_something.txt不会被列出。