Sortieren von Ordnern in Unix beginnend mit dem zweiten Zeichen

Sortieren von Ordnern in Unix beginnend mit dem zweiten Zeichen

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] -k2aber keine Ergebnisse erhalten. Ich bin ziemlich neu in der Unix-Umgebung und jeder Hinweis wird sehr hilfreich sein. Vielen Dank im Voraus.

Antwort1

Mit sortkönnen Sie einen Schlüssel der Form verwenden, F.Cum 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, sortindem 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 -rC1druckt seine Argumente raw auf 1 CSpalte
  • *(qualifiers): Glob mit Glob-Qualifizierern
  • N: Nullglob: wird zu nichts erweitert, wenn es keine Übereinstimmung gibt
  • /: Wählen Sie nur Dateien vom TypVerzeichnis
  • oe[expression]: oSortiert die Liste basierend auf dem Ergebnis des eAusdrucks (des Werts, der $REPLYursprü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, csmithin dieser Reihenfolge und nicht zufällig sortiert wird.

verwandte Informationen