Nói với `ls` để sắp xếp theo mã ASCII thông thường, không phải là thông minh


13

Tôi có một vài tập tin và lssắp xếp chúng như thế này:

a
_b
c

nhưng tôi muốn có

_b
a
c

Làm thế nào tôi có thể làm điều đó?


2
Tôi có thể hỏi tại sao?
RolandiXor

2
Tôi sử dụng dấu gạch dưới để biểu thị các thư mục đặc biệt cần phải lên đầu. Trong thư mục dự án của tôi, tôi có proj_a, proj_b và _old_projects. Nó không được sử dụng nếu thư mục này nằm trong các dự án o.
Martin Uting

Câu trả lời:


9

Là một lệnh một lần, bạn có thể làm điều này:

LC_COLLATE=C ls

Hoặc bạn có thể thêm export LC_COLLATE="C"vào .bashrc của mình để làm cho nó vĩnh viễn (có thể có kết quả không mong muốn sắp xếp ở nơi khác).

Thêm thông tin trên các diễn đàn Ubuntu .


1
Tôi đoán tôi sẽ chỉ bí danh với điều đó, để nó không có tác dụng phụ.
Martin Uting

Điều này không làm việc cho tôi. Tôi hiểu điều này -> paste.pocoo.org/show/403333 (đó là tiếng Đức nhưng không thành vấn đề)
dAnjou

2
@dAnjou LC_COLLATE=Cls thiết lập thứ tự sắp xếp POSIX truyền thống, theo ASCII, trong đó chữ hoa đi trước dấu gạch dưới. Để sắp xếp dấu gạch dưới trước chữ hoa, bạn phải đặt dưới nắp ca-pô và tạo một định nghĩa miền địa phương tùy chỉnh dưới / usr / share / i18n / loc.
misterben

2
Điều này có thể đã hoạt động trong quá khứ, nhưng nó không hoạt động trên Ubuntu 12.04.
Mikel

1
Kể từ Ubuntu 14.04, LC_COLLATE=C lskhông hoạt động, nhưng LC_ALL=C lskhông.
jwodder 17/1/2015

6

Chỉ trong trường hợp không có cách tích hợp sẵn để thực hiện việc này, bạn có thể sử dụng một thay thế đơn giản cho sort:

#!/usr/bin/env python

import sys

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

Lưu nó, ví dụ, tại /bin/pysortvà làm cho nó có thể thực thi ( sudo cp whatever.py /bin/pysortsudo chmod a+x /bin/pysort), và chạy nó dưới dạng ls | pysort:

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

1
Tôi có thể sẽ đặt nó vào ~/binnhưng dự phòng tốt đẹp. Có lẽ tốt hơn là sử dụng globalbing trong python vì đầu ra của ls có thể lạ nếu tên tệp chứa dòng mới.
Martin Uting

1

sẽ ls | sortkhông làm chính xác những gì bạn cần?


1
không, sắp xếp nó là "a _b c"
Stefano Palazzo

1
Không! và sắp xếp cũng không có tùy chọn nào cho việc này :-)
Rinzwind

2
Thật kỳ lạ khi sắp xếp có rất nhiều cách sắp xếp đặc biệt nhưng không phải là "sử dụng giá trị ASCII" một đường
Martin Uting
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.