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.