Dependendo da situação, pode ser tão fácil quanto:
alguma globbing para pegar seus arquivos (filea, fileb, filec, etc.)
FILES='ls file*'
depois concatena-os
for i in $FILES; do cat "${i}" >> newfile; echo "" >> newfile; done
Eu quero combinar vários arquivos de texto em um diretório para um novo arquivo, deixando novas linhas entre os arquivos.
Dependendo da situação, pode ser tão fácil quanto:
alguma globbing para pegar seus arquivos (filea, fileb, filec, etc.)
FILES='ls file*'
depois concatena-os
for i in $FILES; do cat "${i}" >> newfile; echo "" >> newfile; done
Uma maneira de fazer isso é com GNU find
:
td=$(mktemp -d);printf '\n\n' > "$td/2"
find . -maxdepth 1 -type f -exec cat {} "$td/2" \; | head -n -2 > "$td/log"
find
obtém os arquivos regulares no diretório atual e os transmite para cat
, que também tem o arquivo de linhas vazias concatenado.Finalmente, a saída é dada para head
, que exclui as linhas vazias à direita e, em seguida, armazena na arquivo de log.
perl -lpe '$\ = eof && !eof() ? "\n\n" : $/' *.files
Tags files text-processing