Script para os arquivos de log do gato que foram girados

1

Eu frequentemente coloco uma carga de arquivos de log em um único arquivo. Por exemplo, os arquivos estão no formato ABC_0.txt , até ABC_99.txt .

O que eu normalmente tenho que fazer é renomear os números de um único dígito para que o número seja prefixado com zero para o gato funcionar (por exemplo, ABC_0.txt to ABC_9.txt tem que ser renomeado para ABC_00.txt to ABC_09.txt ) .

Então eu só faço isso:

cat *.txt > all.txt

que funciona bem.

Muitas vezes tenho o problema de os arquivos de log serem rotacionados e, na verdade, o arquivo de log mais antigo é ABC_14.txt , por exemplo. Portanto, a linha cat acima terá o conteúdo de all.txt fora de sequência.

Alguma ideia de como começar basicamente a partir de ABC_14.txt ?

Para esclarecer minha dúvida, eu tenho arquivos de log cat0.txt para cat9.txt, mas eu quero que o gato seja assim:

cat cat7.txt cat8.txt cat9.txt cat0.txt cat1.txt cat2.txt cat3.txt cat4.txt cat5.txt cat6.txt >all.txt
    
por arcomber 16.08.2017 / 09:58

2 respostas

0

Se você quiser cat dos arquivos ordenados pelas datas de modificação, poderá fazer o seguinte:

ls -tr ABC_* | xargs cat

Que primeiro classificará os arquivos pelo tempo de modificação, seguido por cat command

man ls
-t    sort by modification time, newest first
-r    reverse order while sorting

ls -tr resultará na classificação por hora da modificação, a mais antiga primeiro

Se você quiser cat dos arquivos em ordem inversa, poderá fazer o seguinte:

ls -r ABC_* | xargs cat

O que primeiro reverterá a ordem dos arquivos, seguido por cat command

por exemplo

$ ls -r ABC_*
ABC_03  ABC_02  ABC_01

Supondo que o conteúdo de cada ABC_number seja o próprio número, a saída será:

$ ls -r ABC_* | xargs cat
03
02
01
    
por Yaron 16.08.2017 / 10:04
1

Você pode usar bash globes para essa finalidade:

cat ABC_[0-9]*.txt

que somente os arquivos cats começaram com o nome "ABC_" seguidos por um número e algum caractere, em seguida, terminaram com .txt .

    
por Ravexina 16.08.2017 / 10:01