4

How to list files that don't match a glob?

E.g., let's say I have a directory that contains hundreds of files, 97% of which have the filename extension .png.

I know I can list the PNG files with:

ls *.png

But, how do I list the opposite, i.e., just the non-PNG files?

1 Answer 1

6

Using ls:

ls -I "*.png"

the quotes are important to stop the shell evaluating the *

Using find:

find . -not -name "*.png"

If you have subdirectories (with files), you may want to limit the search:

find . -maxdepth 1 -type f -not -name "*.png" 

where

  • -maxdepth 1 limits it to the present directory
  • -type f only allows it to print files
2
  • Hmm.. I get ls: illegal option -- I on Mac OS X 10.8. But using find works. So, thanks! :)
    – ma11hew28
    Jul 11, 2012 at 23:31
  • Interesting, I have no experience with Mac so I can't help there I'm afraid. If this answered your question, though, please can you accept it by pressing the hollow tick next to the answer. Thanks :-)
    – Jay
    Jul 11, 2012 at 23:38

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .