Sagen Sie "ls", nach regulären ASCII-Codes zu sortieren, nicht "intelligent"


13

Ich habe ein paar Dateien und lssortiere sie so:

a
_b
c

aber ich will haben

_b
a
c

Wie kann ich das machen?


2
Darf ich fragen warum?
RolandiXor

2
Ich benutze den Unterstrich, um spezielle Verzeichnisse zu kennzeichnen, die nach oben gehen müssen. In meinem Projektordner habe ich proj_a, proj_b und _old_projects. Es ist nicht sinnvoll, wenn sich dieser Ordner in den o-Projekten befindet.
Martin Ueding

Antworten:


9

Als einmaliger Befehl können Sie dies tun:

LC_COLLATE=C ls

Oder Sie können export LC_COLLATE="C"Ihre .bashrc-Datei hinzufügen , um sie dauerhaft zu machen (möglicherweise werden unerwartete Ergebnisse anderswo sortiert).

Weitere Informationen in Ubuntu-Foren .


1
Ich denke, ich werde das nur als Alias ​​bezeichnen, damit es keine Nebenwirkungen hat.
Martin Ueding

Das funktioniert bei mir nicht. Ich bekomme das -> paste.pocoo.org/show/403333 (es ist Deutsch, aber es sollte keine Rolle spielen)
dAnjou

2
@dAnjou LC_COLLATE=Cls legt die traditionelle POSIX-Sortierreihenfolge fest, bei der ASCII-Zeichen in Großbuchstaben vor dem Unterstrich stehen. Wenn Unterstriche vor Großbuchstaben sortiert werden sollen, müssen Sie unter der Motorhaube eine benutzerdefinierte Gebietsschemadefinition unter / usr / share / i18n / locales erstellen.
Misterben

2
Das hat vielleicht in der Vergangenheit funktioniert, aber auf Ubuntu 12.04 funktioniert es nicht.
Mikel

1
Ab Ubuntu 14.04 LC_COLLATE=C lsfunktioniert das nicht, LC_ALL=C lstut es aber .
Jwodder

6

Für den Fall, dass es keine integrierte Möglichkeit gibt, können Sie einen einfachen Ersatz für Folgendes verwenden sort:

#!/usr/bin/env python

import sys

for i in sorted(sys.stdin):
    sys.stdout.write(i)

Speichern Sie es beispielsweise unter /bin/pysortund machen Sie es ausführbar ( sudo cp whatever.py /bin/pysortund sudo chmod a+x /bin/pysort) und führen Sie es aus als ls | pysort:

stefano@lenovo:~/t$ ls | pysort
_b
a
c

1
Ich würde es wohl ~/bindoch schön in Fallback setzen. Es ist wahrscheinlich besser, Globbing in Python zu verwenden, da die Ausgabe von ls seltsam sein kann, wenn ein Dateiname eine neue Zeile enthält.
Martin Ueding

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.