Comment fusionner plusieurs fichiers en fonction de la date de modification et en ignorant la première ligne de chaque fichier


0

J'ai les fichiers suivants:

-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

Le contenu des fichiers contient une ligne de description, suivie de données, séparées par des virgules. Par exemple:

Test1:

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

Test2:

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

Quelqu'un peut-il suggérer une commande permettant de concaténer les fichiers ci-dessus en fonction de la date de modification tout en ignorant la première ligne du fichier, qui correspond à la description (ID, nom, travail, adresse).

C'est ce que je voudrais après le script:

May_1_file_after_concatenate:

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

Même chose pour May5_file_after_concatenate. Le répertoire que je possède contiendra plusieurs millions de fichiers. J'aurai besoin qu'il trie automatiquement la base à la date modifiée et les concatène en conséquence.

Je suis sur Centos 7.


Par "fusion", voulez-vous dire "concaténer", ou est-il possible d'avoir deux lignes provenant de fichiers différents avec le même identifiant qui nécessiteraient un traitement spécial?
Choroba

Oui. Je voulais dire concaténer. Il n’est pas nécessaire d’accorder un traitement spécial aux mêmes pièces d’identité, ce qui est acceptable s’il en existe plusieurs. Merci!
user3567212

Réponses:


1

Dans bash, vous pouvez utiliser le script suivant:

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

Il parcourt les fichiers donnés, récupère la dernière date de modification, puis ajoute tout ce qui commence à la ligne 2 dans un fichier nommé par la date.

S'il y a deux fichiers à insérer dans une ligne de commande ou dans des paramètres, appelez le script sur des groupes de fichiers plus petits de manière séquentielle (avec xargsou manuellement).

La conversion du format de date devrait être facile :-)

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.