6

I'm looking for something to concatenate all files with given extension within a directory, except one. Like:

cat *.txt !(DISCARD.txt)  > catKEPT

This should concatenate all *.txt files in directory, except DISCARD.txt.

dovah
  • 1,717

2 Answers2

6
find . -maxdepth 1 -iname '*.txt' -not -name 'DISCARD.txt' -exec cat {} +>catKEPT
cas
  • 78,579
2

If you are using bash (most of the time this is the case), you may use the extglob shell option that will extend your shell with a more powerful pattern matching syntax.

You can turn it on with shopt -s extglob, and turn it off with shopt -u extglob.

In your example, you would simply do:

$ shopt -s extglob
$ cat -- !(DISCARD).txt > catKEPT

You can find more about this command in this StackOverflow answer.

perror
  • 3,239
  • 7
  • 33
  • 45