Beri tahu `ls` untuk mengurutkan berdasarkan kode ASCII biasa, bukan" dengan cerdas "


13

Saya punya beberapa file dan lsmengurutkannya seperti ini:

a
_b
c

tapi aku ingin memilikinya

_b
a
c

Bagaimana saya bisa melakukan itu?


2
Bolehkah saya bertanya mengapa?
RolandiXor

2
Saya menggunakan garis bawah untuk menunjukkan direktori khusus yang perlu ke atas. Dalam folder proyek saya, saya punya proj_a, proj_b dan _old_projects. Tidak ada gunanya jika folder ini berada dalam proyek-o.
Martin Ueding

Jawaban:


9

Sebagai perintah satu kali, Anda dapat melakukan ini:

LC_COLLATE=C ls

Atau Anda dapat menambahkan export LC_COLLATE="C"ke .bashrc Anda untuk membuatnya permanen (mungkin ada hasil yang tidak terduga menyortir di tempat lain).

Informasi lebih lanjut tentang forum Ubuntu .


1
Saya kira saya hanya akan alias dengan itu, sehingga tidak memiliki efek samping.
Martin Ueding

Ini tidak berhasil untuk saya. Saya mendapatkan ini -> paste.pocoo.org/show/403333 (ini Jerman tapi tidak masalah)
dAnjou

2
@dAnjou LC_COLLATE=Cls menetapkan urutan penyortiran POSIX tradisional, yaitu oleh ASCII di mana huruf besar muncul sebelum garis bawah. Untuk memiliki tanda garis bawah sebelum huruf besar Anda harus mendapatkan di bawah kap dan membuat definisi lokal kustom di / usr / share / i18n / locales.
misterben

2
Ini mungkin berhasil di masa lalu, tetapi tidak berfungsi di Ubuntu 12.04.
Mikel

1
Pada Ubuntu 14.04, LC_COLLATE=C lstidak berfungsi, tetapi LC_ALL=C lstidak.
jwodder

6

Kalau-kalau tidak ada cara bawaan untuk melakukan ini, Anda bisa menggunakan pengganti sederhana untuk sort:

#!/usr/bin/env python

import sys

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

Simpan, misalnya, di /bin/pysortdan buat itu dapat dieksekusi ( sudo cp whatever.py /bin/pysortdan sudo chmod a+x /bin/pysort), dan jalankan sebagai ls | pysort:

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

1
Saya mungkin akan memasukkannya ke dalam ~/bintetapi mundur bagus. Mungkin lebih baik menggunakan globbing di dalam python karena output dari ls mungkin aneh jika sebuah nama file berisi baris baru.
Martin Ueding

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.