Como mesclar vários arquivos com base na data de modificação e ignorando a primeira linha de cada arquivo

Como mesclar vários arquivos com base na data de modificação e ignorando a primeira linha de cada arquivo

Eu tenho os seguintes arquivos:

-rw-r--r--  1 xyz xyz    122 May 01 01:00  Test1
-rw-r--r--  1 xyz xyz    122 May 01 01:00  Test2
-rw-r--r--  1 xyz xyz    122 May 05 05:00  Test3
-rw-r--r--  1 xyz xyz    122 May 05 05:00  Test4

O conteúdo dos arquivos contém uma linha de descrição, seguida de dados, separados por vírgulas. Por exemplo:

Teste1:

ID, Name, Job, Address
1111, John, Janitor, 1234 Corson Ave

Teste2:

ID, Name, Job, Address
2222, Tim, Cashier, 3245 Elliot St

Alguém pode sugerir um comando que concatene os arquivos acima com base na data de modificação, ignorando a primeira linha do arquivo, que é a descrição (ID, Nome, Cargo, Endereço).

Por exemplo, isso é o que eu gostaria depois do script:

May_1_file_after_concatenate:

1111, John, Janitor, 1234 Corson Ave
2222, Tim, Cashier, 3245 Elliot St

A mesma coisa para May5_file_after_concatenate. O diretório que possuo conterá muitos milhões de arquivos. Precisarei que ele classifique automaticamente com base na data de modificação e concatene-os de acordo.

Estou no Centos 7.

Responder1

No bash, você pode usar o seguinte script:

#! /bin/bash
for file in "$@" ; do
    date=$(stat -c%y "$file" | cut -f1 -d' ')
    tail -n+2 "$file" >> "$date"
done

Ele itera sobre os arquivos fornecidos, recupera a data da última modificação e, em seguida, adiciona tudo a partir da linha 2 a um arquivo nomeado pela data.

Se houver muitos arquivos para caber em uma linha de comando ou em parâmetros, chame o script em grupos menores de arquivos sequencialmente (com xargsou manualmente).

Converter o formato da data deve ser fácil :-)

informação relacionada