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 xargs
ou manualmente).
Converter o formato da data deve ser fácil :-)