Ich habe folgende Dateien:
-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
Der Inhalt der Dateien enthält eine Beschreibungszeile, gefolgt von Daten, getrennt durch Kommas. Beispiel:
Test 1:
ID, Name, Job, Address
1111, John, Janitor, 1234 Corson Ave
Test 2:
ID, Name, Job, Address
2222, Tim, Cashier, 3245 Elliot St
Kann jemand bitte einen Befehl vorschlagen, der die oben genannten Dateien basierend auf dem Änderungsdatum verkettet und dabei die erste Zeile in der Datei ignoriert, die die Beschreibung (ID, Name, Job, Adresse) enthält.
Dies ist beispielsweise, was ich nach dem Skript möchte:
1. Mai_Datei_nach_Verkettung:
1111, John, Janitor, 1234 Corson Ave
2222, Tim, Cashier, 3245 Elliot St
Dasselbe gilt für May5_file_after_concatenate
. Das Verzeichnis, das ich habe, wird viele Millionen Dateien enthalten. Ich brauche eine automatische Sortierung basierend auf dem Änderungsdatum und eine entsprechende Verkettung.
Ich verwende Centos 7.
Antwort1
In bash
können Sie das folgende Skript verwenden:
#! /bin/bash
for file in "$@" ; do
date=$(stat -c%y "$file" | cut -f1 -d' ')
tail -n+2 "$file" >> "$date"
done
Es iteriert über die angegebenen Dateien, ruft das letzte Änderungsdatum ab und fügt dann alles ab Zeile 2 zu einer nach dem Datum benannten Datei hinzu.
Wenn zu viele Dateien in eine Befehlszeile oder in Parameter passen, rufen Sie das Skript nacheinander für kleinere Dateigruppen auf (mit xargs
oder manuell).
Das Konvertieren des Datumsformats sollte einfach sein :-)