Angesichts der folgenden Dateien:
ABC38388.SC01.StatueGrade_MKP
ABC38388.SC02.Statue_GKP
DEF38389.SC03.Statue_HKP
XYZ38390.SC00.Statue_WKP
Wie kann ich sie alle basierend auf dem SC
Wert wie folgt auflisten:
XYZ38390.SC00.Statue_WKP
ABC38388.SC01.StatueGrade_MKP
ABC38388.SC02.Statue_GKP
DEF38389.SC03.Statue_HKP
files
ls
sort
file-management
MRKR
quelle
quelle
-t.
weist es an, es.
als Feldtrennzeichen zu verwenden, sodass es-k2
sich auf das zweite Feld bezieht, wie durch definiert.
.Mit zsh können Sie Ihre eigene Sortierreihenfolge für Globs mit den Qualifikationsmerkmalen
oe
oder glob definiereno+
:oder:
Die Sortierfunktion empfängt den Dateinamen in
$REPLY
und soll eine Zeichenfolge zurückgeben, nach der$REPLY
das Globbing sortiert. Hier geben wir den Teil des Dateinamens rechts vom ersten Auftreten von zurück.SC
(oder den vollständigen Dateinamen, wenn er nicht enthalten ist.SC
).quelle
Verwenden Sie auf einem GNU-System und mit
zsh
oderbash
als Shell Folgendes:find
sucht nach den Dateien im aktuellen Verzeichnis (-maxdepth 1
) und druckt sie null-byte-getrennt (-print0
).sort
liest das eingegebene Nullbyte delimited (-z
) und sortiert nach dem Teil des Datensatzes, der im 3. Feld (-k3
) beginnt, das durch einen Punkt (-t.
) getrennt ist.while
liest die Eingabebasename
druckt seinen Namen ohne Pfadquelle
Ich würde - wie ich es oft tue - vorschlagen
perl
.perl
hat eine Sortierfunktion, mit der Sie eine Vergleichsfunktion angeben können. Diese Vergleichsfunktion ist jeder Test, der zwei Werte annimmt, und kehrt-1
,0
oder1
je nach Relativposition.Es wiederholt die Liste, wobei jeder Wert als
$a
und festgelegt wird$b
und der Test für jedes Element durchgeführt wird.Also standardmäßig:
zum stringweisen Vergleich oder
sort { $a <=> $b }
zum numerischen Vergleich .Infolgedessen können Sie jedoch beliebig komplexe benutzerdefinierte Sortierkriterien anwenden:
Oder auf einen Einzeiler, eine Lesung
STDIN
oder eine Datei reduziert (Zeilenvorschub getrennt, was normalerweise gut genug ist):Sie können es stattdessen mit dem Ergebnis
glob
eines Verzeichnismusters füttern :quelle