Cat todos os arquivos em um diretório, com um arquivo específico no início e no final…?

3

Existe uma maneira de cat de todos os arquivos em um determinado diretório, mas com um arquivo específico no início e no final?

Por exemplo, digamos que eu tenha: file1.js, file2.js, file3.js, file4.js, file5.js - Efetivamente, gostaria de cat file2.js file*.js file3.js > /var/www/output.js

Eu tentei algumas variações destes

find ! -name "file2.js" ! -name "file3.js" -type f -exec cat file2.js {} file3.js > /var/www/js/output.js \;
find ! -name "file2.js" ! -name "file3.js" -type f | xargs -I files cat file2.js files file3.js > /var/www/output.js

mas o melhor que posso conseguir é adicionar o arquivo 2.js antes e adicionar o arquivo 3 depois de todos os outros arquivos (várias vezes)

Eu sei que eu poderia especificar os arquivos na ordem que eu queria manualmente, mas isso não é sustentável (estou esperando, potencialmente > 100 arquivos).

Analisei man cat , bem como alguns sites dedicados a xargs , find e cat sem sucesso.

Obrigado antecipadamente.

    
por Aeisor 29.11.2012 / 23:25

1 resposta

4

Com a opção extglob no bash, você pode fazer exatamente isso:

$ shopt -s extglob
$ cat file2.js !(file[23].js) file3.js > /var/www/output.js
    
por Dennis Kaarsemaker 29.11.2012 / 23:33

Tags