Como mesclar vários arquivos com base na data modificada e ignorando a primeira linha em cada arquivo

0

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 por 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 modificada, ignorando a primeira linha do arquivo, que é a descrição (ID, Nome, Trabalho, 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

Mesma coisa para May5_file_after_concatenate . O diretório que eu tenho irá conter muitos milhões de arquivos. Preciso que ele classifique automaticamente a base na data modificada e concatene-os adequadamente.

Estou no Centos 7.

    
por user3567212 20.09.2016 / 18:14

1 resposta

1

Em 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 adiciona tudo a partir da linha 2 em um arquivo nomeado pela data.

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

A conversão do formato de data deve ser fácil: -)

    
por 20.09.2016 / 19:10

Tags