Mesclar arquivos em um também adicionando uma nova linha entre cada arquivo

1

Estou usando

find . -type f \( -name "*.js" ! -name "*-min*" \) -exec cat {} \; > all.js

para mesclar arquivos juntos. Infelizmente eu não recebo uma nova linha depois de cada arquivo, mas ele termina e o novo arquivo começa na mesma linha.

Como posso adicionar uma nova linha entre cada arquivo?

    
por Asken 05.09.2012 / 12:28

3 respostas

4

O script abaixo fará a tarefa

find . -type f \( -name "*.js" ! -name "*-min*" \) | while IFS= read -r line
do
   cat "$line"
   echo
done >all.js
    
por 05.09.2012 / 12:34
5

Se você quiser adicionar sistematicamente uma nova linha após cada arquivo:

find . -type f \( -name "*.js" ! -name "*-min*" \) \
     -exec cat {} \; -exec echo \; > all.js

ou

find . -type f \( -name "*.js" ! -name "*-min*" \) \
     -exec sh -c 'for x; do cat "$x"; echo; done' _ {} + >all.js

Se você quiser adicionar uma nova linha no final de cada arquivo que não termine com uma nova linha:

find . -type f \( -name "*.js" ! -name "*-min*" \) \
     -exec awk '1' {} + > all.js
    
por 06.09.2012 / 22:53
1

Você também pode fazer isso:

find source/path -name *.js | xargs cat > all.js
por 28.10.2012 / 20:47

Tags