List files not matching a pattern?

paislee picture paislee · Dec 15, 2011 · Viewed 61.9k times · Source

Here's how one might list all files matching a pattern in bash:

ls *.jar

How to list the complement of a pattern? i.e. all files not matching *.jar?

Answer

Christian picture Christian · Sep 4, 2012

Use egrep-style extended pattern matching.

ls !(*.jar)

This is available starting with bash-2.02-alpha1. Must first be enabled with

shopt -s extglob

As of bash-4.1-alpha there is a config option to enable this by default.