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

4voto

drkvogel Punkte 1281

Wenn die Dateien alle den gleichen Namen haben oder durch find können Sie tun (z. B.):

find . -name create.sh | xargs tail -n +1

um jede Datei zu finden, ihren Pfad anzuzeigen und zu katalogisieren.

3voto

sjas Punkte 16831

Wenn Sie Farben mögen, versuchen Sie dies:

for i in *; do echo; echo $'\e[33;1m'$i$'\e[0m'; cat $i; done | less -R

oder:

tail -n +1 * | grep -e $ -e '==.*'

oder: (mit installiertem Paket 'multitail')

multitail *

2voto

MartiTro Punkte 21

Ich habe eine Kombination aus:

cat /sharedpath/{unique1,unique2,unique3}/filename > newfile

y

tail -n +1 Datei1 Datei2

in diese:

tail -n +1 /sharedpath/{Ordner1,Ordner2,...,Ordner_n}/file.extension | cat > /sharedpath/newfile

Das Ergebnis ist eine neue Datei, die den Inhalt der einzelnen Unterordner (unique1,unique2 ) in den {}-Klammern enthält, getrennt durch den Namen des Unterordners.

note unique1=ordner1

In meinem Fall ist die file.extension hat denselben Namen in allen Unterordnern.

2voto

boroboris Punkte 1372

Wenn Sie diese hässlichen ==> <== durch etwas anderes ersetzen wollen

tail -n +1 *.txt | sed -e 's/==>/\n###/g' -e 's/<==/###/g' >> "files.txt"

Erklärung:

tail -n +1 *.txt - alle Dateien im Ordner mit Header ausgeben

sed -e 's/==>/\n###/g' -e 's/<==/###/g' - ersetzen ==> con neue Linie + ### y <== mit nur ###

>> "files.txt" - alles in eine Datei ausgeben

2voto

Trey Brister Punkte 363

Hier ist ein wirklich einfacher Weg. Sie sagten, Sie wollen cat, was bedeutet, dass Sie die gesamte Datei sehen wollen. Aber Sie brauchen auch den Dateinamen ausgedruckt.

Versuchen Sie dies

head -n99999999 * o head -n99999999 file1.txt file2.txt file3.txt

Ich hoffe, das hilft

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