Ich habe ein paar Dateien und ls
sortiere sie so:
a
_b
c
aber ich will haben
_b
a
c
Wie kann ich das machen?
Ich habe ein paar Dateien und ls
sortiere 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=C
ls 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 ls
funktioniert das nicht, LC_ALL=C ls
tut 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/pysort
und machen Sie es ausführbar ( sudo cp whatever.py /bin/pysort
und sudo chmod a+x /bin/pysort
) und führen Sie es aus als ls | pysort
:
stefano@lenovo:~/t$ ls | pysort
_b
a
c
~/bin
doch 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 | sort
nicht genau das tun, was du brauchst?