So führen Sie mehrere Dateien in bestimmten Verzeichnissen zu einer einzigen Datei zusammen

0

Ich möchte ein Shell-Skript schreiben, um den Inhalt mehrerer Dateien in einem bestimmten Verzeichnis zusammenzuführen.

DIR1 contains sample1.txt sample2.txt
    sample1.txt contents  :---this is sample1 file---
    sample2.txt contents  :---this is sample2 file---

DIR2 contains demo1.txt demo2.txt
    demo1.txt contents  :---this is demo1 file---

Ich habe die Lösung ausprobiert:

(find /home/DIR1  /home/DIR2 -type f | xargs -i cat {} ) > /result/final.txt

Ich habe auch die Ausgabe erhalten, aber die Reihenfolge der Dateien hat sich geändert.

this is sample2 file---  this is sample1 file---  this is demo1 file---

Ich brauche die Ausgabe jeder Datei in einer anderen Zeile. Wie macht man das? Gibt es eine Möglichkeit, die Ausgabereihenfolge von Dateien beizubehalten, wie z. B., wenn die Ausgabe einer bestimmten Datei oben platziert werden soll? und was nützt die " xargs -i "option in der cmd?

Vielen Dank.

Nutzer
quelle
Welche Dateien möchten Sie zusammenführen?
Kenorb

Antworten:

1

Sie können dies verwenden:

(find directory -type f | xargs -i cat {} ) > TOTAL

Sucht nach allen Dateien im Verzeichnis und fügt den gesamten Inhalt in GESAMT ein.

alphamikevictor
quelle
Ich muss den Inhalt in der Reihenfolge einer bestimmten Datei zusammenführen. Was soll ich zum obigen Cmd hinzufügen?
Benutzer
Bitte fügen Sie ein Beispiel hinzu, da nicht klar ist, was Sie erwarten.
alphamikevictor
Ich habe den obigen Code geändert, bitte überprüfen
Benutzer
Der obige Befehl hat funktioniert, fügt aber den Inhalt der neuen Datei nicht in die neue Zeile ein.
Benutzer
2

Sie müssen direkt in dieses Verzeichnis gehen:

cat /home/me/mydir/* > /home/me/finalData.txt
rwx
quelle
Nein, ich kann nicht, ich schreibe Shell-Skript
Benutzer
@ashwini Was meinst du? Können Sie Ihr Skript dann teilen?
Kenorb
Ich muss ein Shell-Skript schreiben, das von einem anderen [base] -Pfad als / home / me / mydir / location ausgeführt wird.
Benutzer