Dapatkah saya memotong nama file yang panjang di daftar ls

10

Saya memiliki sejumlah file dengan nama yang sangat panjang. Tolong, apakah ada cara untuk menggunakan ls -C dan memotong nama file untuk mendapatkan lebih banyak kolom untuk tampilan keseluruhan?

Atau adakah cara yang lebih baik untuk mendapatkan listing yang ringkas?

Harry Weston
sumber

Jawaban:

9

Anda dapat melakukan sesuatu seperti:

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

contoh kolom

(itu columnsdengan sautogen dari GNU). Atau:

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

contoh kolom Menggunakan columnseperti yang ditemukan pada BSD atau di bsdmainutilsDebian atau turunannya.

zsh juga memiliki dukungan untuk mencetak hal-hal dalam kolom, sehingga Anda dapat mendefinisikan fungsi seperti:

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

Dan gunakan sebagai:

c 20 *.txt

Untuk mencetak daftar file txt dalam kolom, terpotong menjadi 20 karakter.

Dan untuk membuatnya sedikit lebih gila, Anda bisa menambahkan:

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

Dengan begitu, Anda juga bisa melakukan:

20 *

Atau bahkan:

8+8 *

contoh zsh

Stéphane Chazelas
sumber
Cemerlang, terima kasih. Pada sistem Fedora 12 saya, saya menggunakan ls | cut -c1-20 | kolom -W baris "$ {COLUMNS: -80}", dan mendapatkan semua file saya di satu layar.
Harry Weston
0

Dengan asumsi layar 80 kolom, saya suka menggunakan

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

masukkan deskripsi gambar di sini

gunakan ls -FCuntuk mengurutkan berdasarkan kebaruan


(Sidenote: saya lssudah menggulir karena itu alias ls -CF --color | more -r. Tidak yakin itu praktik terbaik ...)

Atav32
sumber