Eu tenho 14 arquivos todos sendo partes de um texto. Eu gostaria de fundi-los em um. Como fazer isso?
files
text-processing
Ivan
fonte
fonte
*
na ordem "natural". Se você tiver "arquivo1.txt ... arquivo9.txt ... arquivo14.txt", ele não funcionará porque arquivo1? .Txt será classificado entre arquivo1.txt e arquivo2.txt. Você teria que renomeá-los para "file01.txt ... file09.txt ... file14.txt". Digaecho *
se você não tem certeza.numeric_glob_sort
opção).Se seus arquivos não estiverem no mesmo diretório, você poderá usar o comando find antes da concatenação:
Muito útil quando seus arquivos já foram solicitados e você deseja mesclá-los para analisá-los.
Mais portatilmente:
Isso pode ou não preservar a ordem dos arquivos.
fonte
"*.csv"
, pois o shell passaria o literal*
parafind
.O comando
na verdade, tem o efeito colateral indesejado de incluir 'arquivo mesclado' na concatenação, criando um arquivo em fuga. Para contornar isso, escreva o arquivo mesclado em um diretório diferente;
ou use uma correspondência de padrão que ignorará o arquivo mesclado;
fonte
cat * > merged-file
funciona bem. Os globos são processados antes da criação do arquivo. Semerged-file
já existir,cat
(pelo menos o meu) detectará que é o arquivo de saída e se recusará a lê-lo. Se o arquivo já existir E você tiver o redirecionamento posteriormente no pipeline, obviamente ele não poderá fazer isso; então, e somente então, você obterá o arquivo descontrolado.cat
não tem como detectar se o arquivo é o de saída. O redirecionamento acontece no shell;cat
somente imprime em stdout.Como os outros daqui dizem ... Você pode usar
cat
Vamos dizer que você tem:
E você deseja apenas
file01
parafile03
efileA
parafileC
:Ou, usando expansão de chave:
Ou, usando a expansão de braçadeira mais sofisticada:
Ou você pode usar o
for
loop:fonte
[01-03]
não funcionará como um padrão brilhante.Você pode especificar o
pattern
arquivo e mesclar todos eles da seguinte maneira:fonte
Outra opção é sed:
Ou...
Ou...
Ou sem redirecionamento ...
Observe que a última linha também grava merge.txt (não wmerge.txt!). Você pode usar w "merge.txt" para evitar confusão com o nome do arquivo e -n para saída silenciosa.
Obviamente, você também pode reduzir a lista de arquivos com caracteres curinga. Por exemplo, no caso de arquivos numerados, como nos exemplos acima, você pode especificar o intervalo com chaves desta maneira:
fonte