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,687
  • 6
  • 21
  • 39

2 Answers2

6
find . -maxdepth 1 -iname '*.txt' -not -name 'DISCARD.txt' -exec cat {} +>catKEPT
cas
  • 1
  • 7
  • 119
  • 185
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,171
  • 7
  • 33
  • 45