J'ai quelques fichiers et les ls
trie comme ceci:
a
_b
c
mais je veux avoir
_b
a
c
Comment puis je faire ça?
J'ai quelques fichiers et les ls
trie comme ceci:
a
_b
c
mais je veux avoir
_b
a
c
Comment puis je faire ça?
Réponses:
En tant que commande unique, vous pouvez le faire:
LC_COLLATE=C ls
Ou vous pouvez ajouter export LC_COLLATE="C"
à votre .bashrc pour le rendre permanent (peut avoir des résultats inattendus triant ailleurs).
Plus d'informations sur les forums Ubuntu .
LC_COLLATE=C
ls définit l'ordre de tri POSIX traditionnel, qui est en ASCII dans lequel les majuscules précèdent le trait de soulignement. Pour que les traits de soulignement soient triés avant les majuscules, vous devez passer sous le capot et créer une définition de paramètres régionaux personnalisée sous / usr / share / i18n / locales.
LC_COLLATE=C ls
ne fonctionne pas, mais LC_ALL=C ls
fonctionne.
Au cas où il n'y aurait pas de méthode intégrée pour ce faire, vous pouvez utiliser un simple remplacement pour sort
:
#!/usr/bin/env python
import sys
for i in sorted(sys.stdin):
sys.stdout.write(i)
Enregistrez-le, par exemple, sur /bin/pysort
et rendez-le exécutable ( sudo cp whatever.py /bin/pysort
et sudo chmod a+x /bin/pysort
), et exécutez-le en tant que ls | pysort
:
stefano@lenovo:~/t$ ls | pysort
_b
a
c
~/bin
mais une bonne solution de repli. Il est probablement préférable d'utiliser le globbing dans python car la sortie de ls peut être étrange si un nom de fichier contient une nouvelle ligne.
ls | sort
ne ferait pas exactement ce dont vous avez besoin?