Làm cách nào để phân loại danh sách các mục có chiều rộng tối thiểu?


7

Làm thế nào để tôi phân loại bất kỳ đầu vào lskhông được kiểm duyệt như thế nào?

ls đang tạo một bảng được tối ưu hóa với chiều rộng tối thiểu cho mỗi hàng, ví dụ:

ls

2  dsao  file with space  with
5  e     g                wsdl-rubo-6cb0f1a9086e80c
d  file   leading space

nhưng nếu tôi cung cấp đầu ra vào column(ví dụ: mỗi tệp trên một dòng), nó sẽ đệm mọi hàng có cùng chiều rộng, vì vậy nó phù hợp với chiều rộng màn hình:

for i in *; do echo "$i"; done | column

2                               file with space                          
5                               g                                        
d                                leading space                           
dsao                            with                                     
e                               wsdl-rubo-6cb0f1a9086e80c                
file

(Tôi chỉ sử dụng danh sách tệp ở đây để tạo cùng một đầu ra như ví dụ. Tôi đang tìm một giải pháp như vậy để phân loại các thứ khác cuối cùng.)

Làm thế nào tôi có thể colunnize bất kỳ đầu ra với chiều rộng col thay đổi?


Được rồi, một cách đọc thay thế yêu cầu của bạn, nếu tôi hiểu chính xác ý kiến ​​của bạn, sẽ là "phân loại đầu vào như column -c_ n-x`, nhưng điều chỉnh đầu ra vào càng ít cột màn hình càng tốt thay vì điền vào chiều rộng được chỉ định". Điều này có đúng không?
jthill

có gần như: ngoài ra nên có càng nhiều cột càng phù hợp với màn hình. (giống như lsquản lý nó). Có lẽ chúng ta tìm ra giải pháp, nếu chúng ta nhìn vào mã nguồn của mã nguồn lslệnh trong coreutils
rubo77

Câu trả lời:


5

Cảm ơn @ rubo77 đã hỏi điều này, đây là một bài tập tuyệt vời. Đối với tôi, đó là lỗi do lỗi tiếng Anh, Tough Stuff là nhịp điệu khó hiểu: nó rất vui, nhanh, mặc dù thuật toán ở đây khá đơn giản.

[chỉnh sửa cuối cùng: chuyển đến https://github.com/jthill/columnate/blob/master/columnate , sửa lỗi, hàng chính được triển khai. ]


Ngoài ra, bạn nên đặt nó trên github. Nếu nó nhanh hơn ls-algory nhịp, có lẽ bạn có thể tạo ra một ls-produc nhanh hơn?
rubo77

@ rubo77 Bạn cần cung cấp cho nó biến COLUMNS. xem 'kiểm tra với' nhận xét trong mã. Và đó là 10x-20x là cách khác xung quanh, đó là chậm, chủ yếu là bởi vì nó awk vs C.
jthill

time ls | sort | columnate COLUMNS=$COLUMNS
jthill

Bạn là một thiên tài. Điều này phải được xuất bản cho mọi bản phân phối linux
rubo77

eh, cảm ơn, thực sự, nhưng điều đó quá mạnh đọc mã, nó gần như brute-force
jthill

3

Một cái gì đó gần với đầu ra của ls:

for i in *; do echo -en "${i}\t"; done; echo

tốt, nó chỉ nhảy liên tiếp, nếu các dòng đầu vào có chiều rộng khác nhau nhiều hơn một tab. Có cách nào để ngăn chặn sự phá vỡ đầu ra ở phía cửa sổ bên phải không?
rubo77
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.