ฉันมีไฟล์จำนวนมากที่มีชื่อยาวมาก กรุณามีวิธีใช้ 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 หรือใน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 *

สมมติว่าหน้าจอคอลัมน์ 80 ฉันชอบที่จะใช้
ls -F | perl -lne 's/(.{34}).*/$1... /s ; print' | column -x | more
ใช้ls -FCแทนเพื่อจัดเรียงตามความใหม่
(Sidenote: การlsเลื่อนของฉันไปแล้วเนื่องจากเป็นนามแฝงls -CF --color | more -rไม่แน่ใจว่าเป็นวิธีปฏิบัติที่ดีที่สุด ... )