Gibt es einen Befehl zum Anzeigen des Verzeichnis- / Dateinamens bei Katzendateien?
Beispiel: Angenommen, zwei Dateien f1.txt und f2.txt befinden sich unter ./tmp
./tmp/f1.txt
./tmp/f2.txt
Wenn ich dann cat ./tmp/*.txt mache , wird nur der Inhalt von Dateien angezeigt. Aber wie zeigt man zuerst den Dateinamen, dann den Inhalt? ZB:
(The needed command):
./tmp/f1.txt:
This is from f1.txt
and so on
./tmp/f1.txt:
This is from f2.txt ...
Gibt es einen Befehl dazu? (Es scheint keine Option für 'cat' zu geben, um die Dateinamen anzuzeigen)
Antworten:
-oder-
quelle
Versuchen Sie es einfach als eine andere Idee
tail -n +1 ./tmp/*.txt
quelle
Sie könnten leicht ein kleines Skript schreiben, das genau das tut,
quelle
"$@"
stattdessen anstelle von$*
, da erstere Dateinamen mit Leerzeichen behandeln (dies ist Teil der POSIX-Shell, es ist kein Bash-Ismus). Auchcat "$f"
.Wenn ein Verzeichnis übergeben wird
cat
, sehen Sie Folgendes:Unmittelbar danach
find
wirdcat
der Inhalt dieses Verzeichnisses angezeigt.quelle
Nicht genau das, wonach Sie gefragt haben, aber Sie können jeder Zeile den Dateinamen voranstellen :
Es wird schwierig sein, viel besser zu werden, ohne auf ein wenig Scripting zurückzugreifen.
quelle
cat ist (absichtlich) ein extrem einfacher Befehl, der nur einen Dateistream liest und in einen anderen kopiert (mit einigen grundlegenden Formatierungsoptionen). Es wäre ziemlich einfach, ein Dienstprogramm basierend auf cat zu erstellen, das den Dateinamen angegeben hat, aber Standardversionen tun dies nicht - wahrscheinlich, weil es einfach ist, mit anderen Befehlen zu replizieren.
Wenn Sie die Seiten manuell untersuchen möchten, können Sie "weniger" verwenden. Dies gibt Ihnen den Dateinamen am Ende jeder Datei im Format: 'foo.txt (Datei 1 von 100) (ENDE) - Weiter: bar.txt).
quelle
Entspricht allen Zeilen und zeigt auch Dateinamen an
quelle
.
passt nicht zu leeren Zeilen