J'ai quelques fichiers et les lstrie comme ceci:
a
_b
c
mais je veux avoir
_b
a
c
Comment puis je faire ça?
J'ai quelques fichiers et les lstrie 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=Cls 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 lsne fonctionne pas, mais LC_ALL=C lsfonctionne.
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/pysortet rendez-le exécutable ( sudo cp whatever.py /bin/pysortet sudo chmod a+x /bin/pysort), et exécutez-le en tant que ls | pysort:
stefano@lenovo:~/t$ ls | pysort
_b
a
c
~/binmais 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 | sortne ferait pas exactement ce dont vous avez besoin?