find . -maxdepth 1 -iname '*.txt' -not -name 'DISCARD.txt' -exec cat {} +>catKEPT
Eu estou procurando por algo para concatenar todos os arquivos com uma determinada extensão dentro de um diretório, exceto um. Como:
cat *.txt !(DISCARD.txt) > catKEPT
Isso deve concatenar todos os arquivos * .txt no diretório, exceto DISCARD.txt.
Se você estiver usando bash
(na maioria das vezes, esse é o caso), você pode usar a opção extglob
shell que estenderá seu shell com uma sintaxe de correspondência de padrões mais poderosa.
Você pode ativá-lo com shopt -s extglob
e desativá-lo com shopt -u extglob
.
No seu exemplo, você simplesmente faria:
$ shopt -s extglob
$ cat -- !(DISCARD).txt > catKEPT
Você pode encontrar mais informações sobre esse comando neste Resposta do StackOverflow .
Tags text-processing cat