ฉันสามารถตัดชื่อไฟล์ยาว ๆ ใน ls listing


10

ฉันมีไฟล์จำนวนมากที่มีชื่อยาวมาก กรุณามีวิธีใช้ ls -C และตัดชื่อไฟล์เพื่อรับคอลัมน์เพิ่มเติมสำหรับมุมมองโดยรวมหรือไม่

หรือมีวิธีที่ดีกว่าในการรับรายชื่อแบบย่อ

คำตอบ:


9

คุณสามารถทำสิ่งที่ชอบ:

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

ตัวอย่างคอลัมน์

(ที่columnsมีสระsจาก GNU autogen) หรือ:

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

ตัวอย่างคอลัมน์ ใช้columnเท่าที่พบใน BSD หรือในbsdmainutilsDebian หรืออนุพันธ์ของมัน

zsh ยังมีการสนับสนุนการพิมพ์สิ่งต่าง ๆ ในคอลัมน์ดังนั้นคุณสามารถกำหนดฟังก์ชันเช่น:

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

และใช้เป็น:

c 20 *.txt

หากต้องการพิมพ์รายการไฟล์ txt ในคอลัมน์ให้ตัดเหลือ 20 อักขระ

และเพื่อทำให้มันบ้าคลั่งยิ่งขึ้นคุณสามารถเพิ่ม:

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

ด้วยวิธีนี้คุณสามารถทำได้:

20 *

หรือแม้กระทั่ง:

8+8 *

ตัวอย่าง zsh


ยอดเยี่ยมขอบคุณ ในระบบ Fedora 12 ของฉันฉันใช้ ls | ตัด -c1-20 | คอลัมน์ -W "$ {COLUMNS: -80}" บรรทัดและได้รับไฟล์ทั้งหมดของฉันในหน้าจอเดียว
Harry Weston

0

สมมติว่าหน้าจอคอลัมน์ 80 ฉันชอบที่จะใช้

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

ป้อนคำอธิบายรูปภาพที่นี่

ใช้ls -FCแทนเพื่อจัดเรียงตามความใหม่


(Sidenote: การlsเลื่อนของฉันไปแล้วเนื่องจากเป็นนามแฝงls -CF --color | more -rไม่แน่ใจว่าเป็นวิธีปฏิบัติที่ดีที่สุด ... )

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.