Como escrever conteúdo de vários arquivos em um único no Unix?

0

Suponha que em um diretório existam alguns arquivos como:

file1.txt  
file2.txt
file3.txt
file4
file5
fab
text1 

Eu preciso eliminar os arquivos com a extensão .txt e anexar o conteúdo dos arquivos restantes com um nome de arquivo iniciado com arquivo ( file4 , file5 ) em um único arquivo .

Eu tentei o comando abaixo, mas ele anexou todos os 5 arquivos em um único arquivo.

ls -ltr file*|grep -vE ".txt" | cat * > final
    
por user159194 02.03.2016 / 15:05

3 respostas

2

Se você tiver bash disponível, poderá usar o seguinte:

shopt -s extglob
cat !(*.txt) > final

Ou usando zsh :

setopt extended_glob
cat ^*.txt > final
    
por 02.03.2016 / 15:13
0

encontre. ! -name '* .txt' | xargs cat > > final

    
por 02.03.2016 / 15:14
0

Tente isso

#!/bin/bash

find . -name '*.txt' -exec rm {} +

for f in file*
do
    cat $f >> final_file
done

Em uma linha sem remover .txt arquivos, mas ignorando-os para o cat

$ find . -name 'file*' ! -name '*.txt' -exec cat {} \; > final
    
por 02.03.2016 / 16:00

Tags