![Sortieren von Ordnern in Unix beginnend mit dem zweiten Zeichen](https://rvso.com/image/168780/Sortieren%20von%20Ordnern%20in%20Unix%20beginnend%20mit%20dem%20zweiten%20Zeichen.png)
Ich versuche, die Verzeichnisliste beginnend mit dem zweiten Zeichen zu sortieren.
Wenn ich beispielsweise den folgenden Code ausführe, erfolgt die Auflistung der Verzeichnisse in der Reihenfolge des ersten Zeichens.
$ ls -1d */
lrodriguez/
mreynolds/
yalberto/
Ich möchte sie folgendermaßen anzeigen:
yalberto/
mreynolds/
lrodriguez/
Ich habe mir folgendes Forum angeschaut: Wie sortiere ich Dateien nach einem Teil des Dateinamens? aber ohne Erfolg.
Ich habe etwas wie Folgendes versucht, ls -1d -- *?[a-z]* | sort -t?[a-z] -k2
aber keine Ergebnisse erhalten. Ich bin ziemlich neu in der Unix-Umgebung und jeder Hinweis wird sehr hilfreich sein. Vielen Dank im Voraus.
Antwort1
Mit sort
können Sie einen Schlüssel der Form verwenden, F.C
um eine Zeichenposition anzugebeninnerhalbein Feld. So zum Beispiel
$ printf '%s\n' */ | sort -k1.2
yalberto/
mreynolds/
lrodriguez/
Beachten Sie, dass dies fehlschlägt, wenn einer der Verzeichnisnamen eine neue Zeile enthält.
Dies könnte mit GNU umgangen werden, sort
indem stattdessen mit NUL-getrennten Datensätzen gearbeitet wird:
printf '%s\0' */ | sort -zk1.2 | tr '\0' '\n'
Beachten Sie auch, dass die Erweiterung */
auch symbolische Links zu Verzeichnissen umfasst.
Antwort2
Mit zsh
:
print -rC1 -- *(N/oe['REPLY=${REPLY#?}'])
print -rC1
druckt seine Argumenter
aw auf1
C
Spalte*(qualifiers)
: Glob mit Glob-QualifizierernN
:N
ullglob: wird zu nichts erweitert, wenn es keine Übereinstimmung gibt/
: Wählen Sie nur Dateien vom TypVerzeichnisoe[expression]
:o
Sortiert die Liste basierend auf dem Ergebnis dese
Ausdrucks (des Werts, der$REPLY
ursprünglich den Dateinamen enthielt, nachdem er durch den Ausdruck bearbeitet wurde).REPLY=${REPLY#?}
: Entfernen Sie das erste Zeichen aus dem Dateinamen.
Sie können das erste Zeichen auch am Ende hinzufügen, z. B. mit, REPLY=${REPLY#?}.$REPLY[1]
sodass asmith
, bsmith
, csmith
in dieser Reihenfolge und nicht zufällig sortiert wird.