Pertanyaan Katakan `ls` untuk mengurutkan berdasarkan kode ASCII biasa, bukan" secara cerdas "


Saya memiliki beberapa file dan ls macam mereka seperti ini:

a
_b
c

tapi saya ingin memilikinya

_b
a
c

Bagaimana saya bisa melakukannya?


11
2018-06-08 19:34


asal


Mungkin saya bertanya mengapa? - RolandiXor♦
Saya menggunakan underscore untuk menunjukkan direktori khusus yang perlu menuju ke atas. Dalam folder proyek saya, saya punya proj_a, proj_b dan _old_projects. Tidak ada gunanya jika folder ini ada di dalam o-proyek. - Martin Ueding


Jawaban:


Sebagai perintah satu kali Anda dapat melakukan ini:

LC_COLLATE=C ls

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

Informasi lebih lanjut tentang Forum Ubuntu.


9
2018-06-08 20:35



Saya kira saya akan hanya alias dengan itu, sehingga tidak memiliki efek samping. - Martin Ueding
Ini tidak berhasil untukku. Saya mendapatkan ini -> paste.pocoo.org/show/403333 (Ini Jerman tetapi seharusnya tidak masalah) - dAnjou
@dAnjou LC_COLLATE=C ls mengatur urutan penyortiran POSIX tradisional, yang oleh ASCII di mana huruf besar datang sebelum garis bawah. Untuk menggarisbawahi mengurutkan sebelum huruf besar Anda harus mendapatkan di bawah kap dan membuat definisi lokal kustom di bawah / usr / share / i18n / locales. - misterben
Ini mungkin telah berhasil di masa lalu, tetapi tidak berfungsi pada Ubuntu 12.04. - Mikel
Seperti dari Ubuntu 14.04, LC_COLLATE=C ls tidak berfungsi, tapi LC_ALL=C ls tidak. - jwodder


Seandainya tidak ada cara bawaan untuk melakukan ini, Anda dapat 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/pysort dan membuatnya bisa dieksekusi (sudo cp whatever.py /bin/pysort dan sudo chmod a+x /bin/pysort), dan jalankan sebagai ls | pysort:

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

6
2018-06-08 19:52



Saya mungkin akan memasukkannya ~/bin tapi mundur bagus. Mungkin lebih baik untuk menggunakan globbing dalam python karena output dari ls mungkin aneh jika nama file berisi baris baru. - Martin Ueding


akan ls | sort tidak melakukan apa yang Anda butuhkan?


1
2018-06-08 19:53



tidak, itu seperti "a _b c" - Stefano Palazzo♦
tidak! dan semacam juga belum mendapat opsi untuk ini :-) - Rinzwind
Aneh rasanya semacam itu memiliki begitu banyak cara penyortiran khusus tetapi bukan "menggunakan nilai ASCII" satu ... - Martin Ueding