Ich habe ein paar Dateien und lssortiere sie so:
a
_b
c
aber ich will haben
_b
a
c
Wie kann ich das machen?
Ich habe ein paar Dateien und lssortiere sie so:
a
_b
c
aber ich will haben
_b
a
c
Wie kann ich das machen?
Antworten:
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 .
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.
LC_COLLATE=C lsfunktioniert das nicht, LC_ALL=C lstut es aber .
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
~/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.
würde ls | sortnicht genau das tun, was du brauchst?