O problema é que os arquivos individuais não são classificados, ou seja, se você usou algo como sort -u file* > sortedFile
, o sort teria que carregar o conteúdo de todos os arquivos e depois classificá-los. Eu suponho que isso é ineficiente, já que você provavelmente não tem mais de 120 GB de RAM.
Eu sugeriria que você primeiro classificasse todos os arquivos individualmente e mesclasse-os usando sort -m
, algo ao longo destas linhas (este código não foi testado!):
for f in file*; do
gzip -dc "$f" | sort > sorted.$f.bak
done
sort -m -u sorted.file*.bak > sortedFile
rm -f sorted.file*.bak
Parte relevante da página do manual de classificação (por exemplo, link ):
-m, --merge merge already sorted files; do not sort
Atualizar : depois de ler link , eu acho que seu comando original pode ser tão rápido, já que o tipo divide sua entrada em partes gerenciáveis de qualquer maneira. Sua linha de comando ficaria assim:
sort <(zcat file1) <(zcat file2) ... <(zcat file15) > sortedFile
Isso também permitiria o uso de mais de um núcleo de sua máquina.