Wie sortiere ich die Ausgabe von "ls"?

14

Ist es möglich, diese Ausgabe sortiert nach titlepage_1.pdf vor titlepage_19.pdf anzuzeigen?

$ ls
allTitlepage.pdf         titlepage_12.pdf  titlepage_19.tex  titlepage_26.pdf  titlepage_32.tex  titlepage_4.tex
allTitlepage.tex         titlepage_12.tex  titlepage_1.pdf   titlepage_26.tex  titlepage_33.pdf  titlepage_5.pdf
assignment.pdf           titlepage_13.pdf  titlepage_1.tex   titlepage_27.pdf  titlepage_34.pdf  titlepage_5.tex
assignment.tex           titlepage_13.tex  titlepage_20.pdf  titlepage_27.tex  titlepage_34.tex  titlepage_6.pdf
graphicsAssignment2.pdf  titlepage_14.pdf  titlepage_20.tex  titlepage_28.pdf  titlepage_35.pdf  titlepage_6.tex
graphicsAssignment2.tex  titlepage_14.tex  titlepage_21.pdf  titlepage_28.tex  titlepage_35.tex  titlepage_7.pdf
README.md                titlepage_15.pdf  titlepage_21.tex  titlepage_29.pdf  titlepage_36.pdf  titlepage_7.tex
thesisTitlepage.pdf      titlepage_15.tex  titlepage_22.pdf  titlepage_29.tex  titlepage_36.tex  titlepage_8.pdf
thesisTitlepage.tex      titlepage_16.pdf  titlepage_22.tex  titlepage_2.pdf   titlepage_37.pdf  titlepage_8.tex
titlepage_0.pdf          titlepage_16.tex  titlepage_23.pdf  titlepage_2.tex   titlepage_37.tex  titlepage_9.pdf
titlepage_0.tex          titlepage_17.pdf  titlepage_23.tex  titlepage_30.pdf  titlepage_38.pdf  titlepage_9.tex
titlepage_10.pdf         titlepage_17.tex  titlepage_24.pdf  titlepage_30.tex  titlepage_38.tex  titlepage_one.pdf
titlepage_10.tex         titlepage_18.pdf  titlepage_24.tex  titlepage_31.pdf  titlepage_3.pdf   titlepage_one.tex
titlepage_11.pdf         titlepage_18.tex  titlepage_25.pdf  titlepage_31.tex  titlepage_3.tex   titlepage_two.tex
titlepage_11.tex         titlepage_19.pdf  titlepage_25.tex  titlepage_32.pdf  titlepage_4.pdf
alhelal
quelle
3
Der Titel sollte genauer sein, da er wie ein Duplikat aussieht (was auch immer der Fall sein könnte).
Peter Mortensen

Antworten:

31

Verwenden Sie den Schalter -v [natürliche Art von (Versions-) Nummern im Text]

ls -v
Vijay
quelle
Wenn Sie eine einzelne Spalte wünschen, verwenden Sie ls -1v
Vijay
13

Die Ausgabe ist sortiert. Laut der lsManpage:

Einträge alphabetisch sortieren, wenn weder -cftuvSUX noch --sort angegeben ist.

Wenn Sie jedoch noch weiter gehen möchten, haben Sie mindestens zwei Möglichkeiten:

Option 1 - lsSortierschalter

man lsInformiert Sie über eine Reihe von Schaltern, die Sie zum Sortieren verwenden können. Insbesondere heißt es in der Manpage von ls :

keine (-U), Größe (-S), Zeit (-t), Version (-v), Erweiterung (-X)

In Ihrem Fall möchten Sie "version" sortieren (-v). Seien Sie jedoch vorsichtig, da hierdurch auch alles sortiert wird, was ein blahblah-X.Y.Z-AArrangement aufweist, das möglicherweise nicht ganz Ihren Wünschen entspricht. Siehe auch die GNU-Erklärung zur Versionssortierung .

Option 2 - Pipes zu Sortierbefehlen

Sie können eine Pipe verwenden |, um die Ausgabe an einen anderen Befehl zu senden, z. B. den Befehl, mit sort dem Sie auf verschiedene andere Arten sortieren können , z. B. ls -1 | sort -nwenn Sie Dateien nummeriert haben. Der -1Schalter stellt sicher, dass die Ausgabe eine Zeile pro Datei ist.

Ebenso können Sie die Ausgabe manipulieren, um das Sortieren zu erleichtern, indem Sie Dinge wie sedoder verwenden awk.

Es gibt viele Möglichkeiten, diese Art von Frage zu beantworten. Möglicherweise ist ein Linux-Shell-Tutorial hilfreich.

* (Sehen Sie, was ich dort gemacht habe? :-P)

tu-Reinstate Monica-dor duh
quelle
6

Wie bereits in einem Kommentar darauf hingewiesen, der Ausgang ist bereits sortiert, sondern durch Zeichen, keine Zahlen. Möglicherweise möchten Sie die Ausgabe von leiten, lsdurch sortdie ein Schalter zum Sortieren nach Zahlen in Zeichenfolgen verfügt:

ls | sort --version-sort

Aus der Manpage :

-V, --version-sort
         natural sort of (version) numbers within text

Nachteil: Bei der Ausgabe werden lsdie Dateien in einer Tabelle mit so vielen Spalten ausgegeben, wie auf den aktuellen Bildschirm passen (genau wie Sie in Ihrem Beitrag gezeigt haben). Wenn jedoch lsfestgestellt wird, dass die Ausgabe in eine Datei oder in eine Pipe (wie in ls | sort) umgeleitet wird, werden lsdie Dateien in nur einer Spalte gedruckt , da davon ausgegangen wird, dass die Ausgabe zeilenweise (auch dateiweise) verarbeitet werden soll. von einem anderen Programm (wie sort). Die Ausgabe von ls | sort -Vwird also in einer Spalte statt in einer Tabelle mit mehreren Spalten erfolgen. Lesen Sie @vijays einfache, aber perfekte Antwort, wie Sie das vermeiden können.

PerlDuck
quelle
1
Sie können die Ausgabe auch ancolumn
David Conrad
0

ls -l : listet Dateien des Verzeichnisses vertikal aber nicht in einer bestimmten Reihenfolge auf.

ls -l | sort -k 3: -k 3würde die Ausgabe des vorherigen Befehls nach der 3. Spalte sortieren.

AB01
quelle