Ho un paio di file e ls
li ordina in questo modo:
a
_b
c
ma voglio avere
_b
a
c
Come posso fare ciò?
Ho un paio di file e ls
li ordina in questo modo:
a
_b
c
ma voglio avere
_b
a
c
Come posso fare ciò?
Risposte:
Come comando unico puoi fare questo:
LC_COLLATE=C ls
Oppure puoi aggiungere export LC_COLLATE="C"
al tuo .bashrc per renderlo permanente (potrebbe avere risultati inaspettati l'ordinamento altrove).
Maggiori informazioni sui forum di Ubuntu .
LC_COLLATE=C
ls imposta il tradizionale ordinamento POSIX, che è in base a ASCII in cui le lettere maiuscole precedono il trattino basso. Per ordinare i caratteri di sottolineatura prima delle maiuscole dovresti andare sotto il cofano e creare una definizione locale personalizzata sotto / usr / share / i18n / locales.
LC_COLLATE=C ls
non funziona, ma LC_ALL=C ls
funziona.
Nel caso in cui non ci sia un modo integrato per farlo, è possibile utilizzare un semplice sostituto per sort
:
#!/usr/bin/env python
import sys
for i in sorted(sys.stdin):
sys.stdout.write(i)
Salvalo, ad esempio, su /bin/pysort
e rendilo eseguibile ( sudo cp whatever.py /bin/pysort
e sudo chmod a+x /bin/pysort
), ed eseguilo come ls | pysort
:
stefano@lenovo:~/t$ ls | pysort
_b
a
c
~/bin
inserirò ma un bel fallback. Probabilmente è meglio usare il globbing all'interno di Python poiché l'output di ls potrebbe essere strano se un nome file contiene una nuova riga.
sarebbe ls | sort
non fare esattamente quello che ti serve?