485 Stimmen

Mehrere Dateien zusammenfügen, aber den Dateinamen als Abschnittsüberschrift einfügen

Ich möchte eine Reihe von Textdateien im Terminal zu einer großen Datei verketten. Ich weiß, dass ich dies mit dem Befehl cat tun kann. Ich möchte jedoch, dass der Dateiname jeder Datei vor dem "Datendump" für diese Datei steht. Weiß jemand, wie man das macht?

was ich derzeit habe:

file1.txt = bluemoongoodbeer

file2.txt = awesomepossum

file3.txt = hownowbrowncow

cat file1.txt file2.txt file3.txt

gewünschte Leistung:

file1

bluemoongoodbeer

file2

awesomepossum

file3

hownowbrowncow

0 Stimmen

Ich bin eigentlich mit uuencode & uudecode etwas Ähnliches zu tun, ich brauche nicht die Datei lesbar dazwischen, nur das Ergebnis und Rohr sie zu einem anderen Befehl wieder

0 Stimmen

bat ist eine hervorragende Alternative zu cat wenn man einfach nur Lust hat siehe den Inhalt mehrerer Dateien

15voto

Kevin Punkte 2501
find . -type f -print0 | xargs -0 -I % sh -c 'echo %; cat %'

Damit wird der vollständige Dateiname (einschließlich Pfad) und dann der Inhalt der Datei ausgegeben. Es ist auch sehr flexibel, da Sie -name "expr" für den Find-Befehl verwenden und beliebig viele Befehle für die Dateien ausführen können.

8voto

kvantour Punkte 22682

Und die fehlende awk-Lösung ist:

$ awk '(FNR==1){print ">> " FILENAME " <<"}1' *

6voto

MorpheousMarty Punkte 69

So gehe ich normalerweise mit solchen Formatierungen um:

for i in *; do echo "$i"; echo ; cat "$i"; echo ; done ;

In der Regel leite ich die Katze in einen grep für spezifische Informationen.

5voto

ch3ll0v3k Punkte 336

Ich mag diese Option

for x in $(ls ./*.php); do echo $x; cat $x | grep -i 'menuItem'; done

Die Ausgabe sieht wie folgt aus:

./debug-things.php
./Facebook.Pixel.Code.php
./footer.trusted.seller.items.php
./GoogleAnalytics.php
./JivositeCode.php
./Live-Messenger.php
./mPopex.php
./NOTIFICATIONS-box.php
./reviewPopUp_Frame.php
            $('#top-nav-scroller-pos-<?=$active**MenuItem**;?>').addClass('active');
            gotTo**MenuItem**();
./Reviews-Frames-PopUps.php
./social.media.login.btns.php
./social-side-bar.php
./staticWalletsAlerst.php
./tmp-fix.php
./top-nav-scroller.php
$active**MenuItem** = '0';
        $active**MenuItem** = '1';
        $active**MenuItem** = '2';
        $active**MenuItem** = '3';
./Waiting-Overlay.php
./Yandex.Metrika.php

4voto

Gagan Punkte 41

Können Sie diesen einfachen Befehl verwenden, anstatt eine for-Schleife zu benutzen,

ls -ltr | awk '{print $9}' | xargs head

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X