ฉันมีไฟล์จำนวนมากที่มีชื่อยาวมาก กรุณามีวิธีใช้ ls -C และตัดชื่อไฟล์เพื่อรับคอลัมน์เพิ่มเติมสำหรับมุมมองโดยรวมหรือไม่
หรือมีวิธีที่ดีกว่าในการรับรายชื่อแบบย่อ
ฉันมีไฟล์จำนวนมากที่มีชื่อยาวมาก กรุณามีวิธีใช้ ls -C และตัดชื่อไฟล์เพื่อรับคอลัมน์เพิ่มเติมสำหรับมุมมองโดยรวมหรือไม่
หรือมีวิธีที่ดีกว่าในการรับรายชื่อแบบย่อ
คำตอบ:
คุณสามารถทำสิ่งที่ชอบ:
ls | cut -c1-20 | columns -W "${COLUMNS:-80}"
(ที่columns
มีสระs
จาก GNU autogen) หรือ:
ls | cut -c1-20 | column -c"${COLUMNS:-80}"
ใช้column
เท่าที่พบใน BSD หรือในbsdmainutils
Debian หรืออนุพันธ์ของมัน
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 *
สมมติว่าหน้าจอคอลัมน์ 80 ฉันชอบที่จะใช้
ls -F | perl -lne 's/(.{34}).*/$1... /s ; print' | column -x | more
ใช้ls -FC
แทนเพื่อจัดเรียงตามความใหม่
(Sidenote: การls
เลื่อนของฉันไปแล้วเนื่องจากเป็นนามแฝงls -CF --color | more -r
ไม่แน่ใจว่าเป็นวิธีปฏิบัติที่ดีที่สุด ... )