Tôi có thể cắt bớt tên tệp dài trong danh sách ls không


10

Tôi có một số tập tin với tên rất dài. Xin vui lòng, có cách nào để sử dụng ls -C và cắt bớt tên tệp để có thêm cột cho chế độ xem tổng thể không?

Hoặc có cách nào tốt hơn để có được một danh sách nhỏ gọn?

Câu trả lời:


9

Bạn có thể làm một cái gì đó như:

ls | cut -c1-20 | columns -W "${COLUMNS:-80}"

ví dụ cột

(đó là columnsvới một sautogen GNU). Hoặc là:

ls | cut -c1-20 | column -c"${COLUMNS:-80}"

ví dụ cột Sử dụng columnnhư được tìm thấy trên BSD hoặc trong bsdmainutilsDebian hoặc các dẫn xuất của nó.

zsh cũng có hỗ trợ in mọi thứ trong các cột, vì vậy bạn có thể xác định một chức năng như:

setopt extendedglob
c() print -rC$[COLUMNS/(($1)+2)] -- "${(M)@[2,-1]##?(#c0,$[$1])}"

Và sử dụng nó như:

c 20 *.txt

Để in danh sách các tệp txt trong các cột, cắt ngắn thành 20 ký tự.

Và để làm cho nó điên hơn một chút, bạn có thể thêm:

command_not_found_handler() {(($1)) && c "$@"}

Bằng cách đó, bạn cũng có thể làm:

20 *

Hoặc thậm chí:

8+8 *

ví dụ zsh


Rực rỡ, cảm ơn bạn. Trên hệ thống Fedora 12 của tôi, tôi đã sử dụng ls | cắt -c1-20 | các cột -W "$ {COLUMNS: -80}" và nhận tất cả các tệp của tôi trên một màn hình.
Harry Weston

0

Giả sử màn hình cột 80, tôi thích sử dụng

ls -F | perl -lne 's/(.{34}).*/$1... /s ; print' | column -x | more

nhập mô tả hình ảnh ở đây

sử dụng ls -FCthay thế để sắp xếp theo thời gian


(Sidenote: tôi lsđã cuộn vì nó có biệt danh ls -CF --color | more -r. Không chắc đó là cách thực hành tốt nhất ...)

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.