Ls'ye söyle, “akıllıca” değil, normal ASCII kodlarına göre sırala


13

Birkaç dosyam var ve lsbunları şöyle sıralıyor:

a
_b
c

ama sahip olmak istiyorum

_b
a
c

Bunu nasıl yapabilirim?


2
Nedenini sorabilir miyim?
RolandiXor

2
Alt çizgiyi, üste gitmesi gereken özel dizinleri belirtmek için kullanıyorum. Projeler klasörümde proj_a, proj_b ve _old_projects var. Bu klasör o-projeler içindeyse işe yaramaz.
Martin Ueding

Yanıtlar:


9

Tek seferlik komut olarak şunları yapabilirsiniz:

LC_COLLATE=C ls

Veya export LC_COLLATE="C"kalıcı yapmak için .bashrc'nize ekleyebilirsiniz (başka bir yerde sıralanmamış beklenmeyen sonuçlara sahip olabilir).

Ubuntu forumları hakkında daha fazla bilgi .


1
Sanırım sadece bununla takma ad vereceğim, böylece yan etkileri yok.
Martin Ueding

Bu benim için işe yaramıyor. Bunu anladım -> paste.pocoo.org/show/403333 (almanca ama önemli olmamalı)
dAnjou

2
@ dAnjou LC_COLLATE=Cls, büyük harfin alt çizgiden önce geldiği ASCII'ye göre geleneksel POSIX sıralama düzenini ayarlar. Alt çizgilerin büyük harflerden önce sıralanması için kaputun altına girmeniz ve / usr / share / i18n / locales altında özel bir yerel ayar tanımlamanız gerekir.
misterben

2
Bu geçmişte işe yaramış olabilir, ancak Ubuntu 12.04 üzerinde çalışmıyor.
Mikel

1
Ubuntu 14.04'ten itibaren LC_COLLATE=C lsçalışmıyor, ama çalışıyor LC_ALL=C ls.
jwodder

6

Bunu yapmanın yerleşik bir yolu yoksa, aşağıdakiler için basit bir yedek kullanabilirsiniz sort:

#!/usr/bin/env python

import sys

for i in sorted(sys.stdin):
    sys.stdout.write(i)

Örneğin, konumuna kaydedin /bin/pysortve yürütülebilir ( sudo cp whatever.py /bin/pysortve sudo chmod a+x /bin/pysort) yapın ve şu şekilde çalıştırın ls | pysort:

stefano@lenovo:~/t$ ls | pysort
_b
a
c

1
Muhtemelen ~/bingüzel bir geri dönüş koymak . Bir dosya adı yeni satır içeriyorsa ls çıktısı garip olabileceğinden, muhtemelen python içinde globbing kullanmak daha iyidir.
Martin Ueding

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.