Robert Robert - 2 months ago 5
Bash Question

How do I find all files that do not begin with a given prefix in bash?

I have a bunch of files in a folder:

foo_1
foo_2
foo_3
bar_1
bar_2
buzz_1
...


I want to find all the files that do not start with a given prefix and save the list to a text file. Here is an example for the files that do have a given prefix:

find bar_* > Positives.txt

Answer

This should do the trick in any shell

ls | grep -v '^prefix'

The -v option inverts grep's search logic, making it filter out all matches. Using grep instead of find you can use powerful regular expressions instead of the limited glob patterns.

Comments