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
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?
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
Você também pode fazer isso:
find source/path -name *.js | xargs cat > all.js