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

Rob*_*ert 5 unix bash shell grep find

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

foo_1 
foo_2
foo_3
bar_1
bar_2
buzz_1
...
Run Code Online (Sandbox Code Playgroud)

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

find bar_* > Positives.txt
Run Code Online (Sandbox Code Playgroud)

lur*_*ker 6

如果你正在做子目录:

find . ! -name "bar_*"
Run Code Online (Sandbox Code Playgroud)


Jen*_*ens 5

这应该在任何外壳中都能解决问题

ls | grep -v '^prefix'
Run Code Online (Sandbox Code Playgroud)

-v选项会反转grep的搜索逻辑,使其过滤出所有匹配项。使用grep代替find,可以使用功能强大的正则表达式代替有限的glob模式。


gre*_*eke 5

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

递归:

find ! -name 'bar_*' > Negatives.txt
Run Code Online (Sandbox Code Playgroud)

顶级目录:

find -maxdepth 1 ! -name 'bar_*' > Negatives.txt
Run Code Online (Sandbox Code Playgroud)