Màu sắc khác nhau cho phạm vi KiB trong `ls -l`


9

Có cách nào lành mạnh để làm nổi bật các cột thứ 4, 5 và 6 từ bên phải kích thước tệp trong ls -lkhông? Ý định của tôi là làm cho nó dễ dàng đọc kích thước tệp bằng byte, KiBs hoặc MiBs. Tôi biết về -hlá cờ, nhưng tôi thấy rằng việc phải giải thích các chữ cái ở cuối sẽ cồng kềnh hơn là chỉ nhìn và thấy độ dài của số (độ lớn). Đây là cùng một lý do tại sao xe đua sử dụng quay số tương tự thay vì kỹ thuật số.

Vỏ mục tiêu của tôi là Bash. Cảm ơn.

EDIT: Tôi đang tìm cách làm nổi bật hàng ngàn, mười nghìn và một trăm ngàn vị trí của cột kích thước. Như thế này: 123 456 789


Có lẽ điều này có thể giúp bạn ra ngoài: unix.stackexchange.com/a/49270/14084
Bernhard

Cảm ơn, Bernhard! Tôi sử dụng giải pháp của bạn cho câu hỏi đó mỗi ngày, tôi đã đặt lslbí danh cho nó với một số thay đổi nhỏ. Trong thực tế, câu trả lời cho câu hỏi này sẽ được kết hợp với kỹ thuật của bạn trong lslbí danh của tôi .
dotancohen

@dotancohen Ah, không nhận ra đó là cùng một người hỏi câu hỏi, nhưng tôi thực sự đang đề cập đến câu trả lời ls ++ này ở đây :)
Bernhard

Tôi hiểu rồi. Thật không may, ls ++ không giải quyết vấn đề này.
dotancohen

@Bernhard: Nó vẫn cần một số điều chỉnh, nhưng hãy xem:grep --color -E -- "$(ls -rtl $@ | tail -n4)|$" <(ls -l $@ | perl -pe 's{^((?:\S+\s+){4}\d*)(\d{3})(?=\d{3})}{$1\e[31;1m$2\e[m}')
dotancohen

Câu trả lời:


7

Có lẽ một cái gì đó như:

ls -l | perl -pe 'BEGIN{@color=(0,2,3,1,5,4)}
  s{((?:\S+\s+){4})(\d+)}{"$1\e[3" . 
  $color[log($2||1)/log(2)/10] . "m$2\e[m"}e'

Đối với màu đen (hoặc bất kỳ màu nền trước mặc định nào có trên thiết bị đầu cuối của bạn) cho các kích thước từ 0 đến 1023, màu xanh lá cây từ 1k đến 1M, màu vàng cho 1M đến 1G, sau đó là đỏ, tím, xanh.

Chỉnh sửa . Dựa trên yêu cầu chỉnh sửa của bạn:

ls -l | perl -pe 's{^((?:\S+\s+){4}\d*)(\d{3})(?=\d{3})}
                   {$1\e[31;1m$2\e[m}'

Mát mẻ! Tôi đoán người ta sẽ muốn có một bí danh cho điều đó mặc dù? :)
posdef

Cảm ơn. Đó không phải là những gì tôi đang tìm kiếm (tôi sẽ làm rõ câu hỏi) nhưng nó chắc chắn rất hữu ích và tôi vừa học được một loạt các perl từ nó!
dotancohen

Rất đẹp! Và cảm ơn bạn đã dạy tôi một số perl!
dotancohen

3

Cách dễ nhất mà bạn không cần cài đặt bất kỳ phần mềm bổ sung nào là grep --colorbất cứ điều gì bạn muốn. Để làm nổi bật kích thước tệp từ đầu ra ls, bạn nên chạy một cái gì đó như thế (đôi khi nó sẽ làm nổi bật không chỉ kích thước):

ls -l | grep --color '\s\+[0-9]\+\s'

Xin vui lòng tham khảo câu hỏi tương tự trên SO.


Cảm ơn bạn. Trong thực tế, làm nổi bật số không phải là những gì tôi đang tìm kiếm. Tôi đã làm rõ câu hỏi. Trong mọi trường hợp, +1 do dạy tôi điều gì đó mới!
dotancohen
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.