Führen Sie den Befehl ls
für das aktuelle Verzeichnis aus und erhalten Sie die Ausgabe:
$ ls
Applications Documents Library Music Public
Desktop Downloads Movies Pictures
Ich möchte sie wie folgt aufzählen:
1. Applications
2. Desktop
3. Documents
4. Downloads
5. Library
6. Movies
7. Music
8. Pictures
9. Public
Dies könnte auf less
mittlere Weise erreicht werden
ls | less -N
Wie kann man sie auf einfache Weise aufzählen?
command-line
Infinitesimalrechnung
quelle
quelle
Antworten:
Oder einfach:
von
man nl
:quelle
Sie sollten die Ausgabe von
ls
an einen anderen Befehl weiterleiten. Mein Vorschlag ist , zu verwenden ,awk
in dieser Art und Weise :Bitte beachten Sie, dass die Datei in ihrem Namen ein
file\nnewline
Zeilenumbruchzeichen enthält , das\n
von der Option maskiert wird-b
.Die Option
--group-directories-first
gibt die Verzeichnisse vor den Dateien aus.Eine andere Möglichkeit ist die Verwendung der for-Schleife (in diesem Fall wird es jedoch schwieriger, die Verzeichnisse am Anfang der Liste zu platzieren):
quelle
Wenn nur eine Nummer angezeigt wird, haben Sie verschiedene Möglichkeiten
less -N
:Wenn Sie eine benutzerdefinierte Ausgabenummerierung wünschen, würde ich vorschlagen,
find
alles zu verwenden und zu tun, was Sie drucken möchten:POSIXly würden Sie tun:
quelle
i
muss im Voraus initialisiert werden:i=0; find ...
-exec sh -c '....'
unter einer separaten Sh-Shell läuft.Sie können dies auch vollständig mit einem kurzen Bash-Skript tun:
Sie können sogar ausgefallen sein und die Zeilennummer für mehr als 9 Ergebnisse auffüllen:
Verwendung
Angenommen, Sie haben das Skript als ausführbare Datei
numbered-ls.sh
im aktuellen Arbeitsverzeichnis gespeichert :Das Argument
DIRECTORY
ist optional und verwendet standardmäßig das aktuelle Arbeitsverzeichnis.Erläuterung
Wenn das Skript mit einem Argument aufgerufen wurde, ändern Sie das Arbeitsverzeichnis in den Pfad im ersten Argument.
Ordnen Sie alle Einträge des aktuellen Arbeitsverzeichnisses zu und überprüfen Sie sie. Inkrementieren Sie für jeden Eintrag einen Zähler und drucken Sie seinen Wert zusammen mit dem Namen des Eintrags aus. Zeilenumbruchzeichen im Namen des Eintrags werden durch ersetzt
^N
.Leiten Sie die Ausgabe durch
cat -vt
, um ordnungsgemäß mit Dateinamen umzugehen, die nicht druckbare Zeichen enthalten, die das Terminal möglicherweise als Steuerzeichen interpretiert.quelle