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)
这应该在任何外壳中都能解决问题
ls | grep -v '^prefix'
Run Code Online (Sandbox Code Playgroud)
-v选项会反转grep的搜索逻辑,使其过滤出所有匹配项。使用grep代替find,可以使用功能强大的正则表达式代替有限的glob模式。
你想找到不以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)