ฉันจะเรียงลำดับตามเจ้าของและกลุ่มได้อย่างไร?


คำตอบ:


8

ลองสิ่งนี้:

ls -l | awk '{print $3, $4, $8}' | sort

มันจะพิมพ์ชื่อผู้ใช้ชื่อกลุ่มและชื่อไฟล์โดยมีเงื่อนไขว่าชื่อไฟล์ไม่มีช่องว่าง หรือคุณสามารถพิมพ์:

ls -l | awk '{print $3, $4, $0}' | sort

สิ่งนี้จะพิมพ์ชื่อผู้ใช้ชื่อกลุ่มและls -lเอาท์พุทแบบเต็มเรียงตามชื่อผู้ใช้ก่อนจากนั้นจึงls -lพิมพ์ชื่อกลุ่มจากนั้นพิมพ์สิ่งใดก็ตามก่อน

โปรดทราบว่าหมายเลขคอลัมน์จริงอาจแตกต่างกันไปขึ้นอยู่กับการกระจายของคุณ ฉันลองของฉันใน SUSE และ coreutils เวอร์ชัน 5.2.1

อาจมีโซลูชั่นที่ดีกว่าและซับซ้อนกว่า แต่นี่เป็นวิธีที่ง่ายที่สุดและจะใช้งานได้เกือบตลอดเวลา


1
หมายเลข s / แถว / หมายเลขคอลัมน์ /
หยุดชั่วคราวจนกว่าจะมีประกาศ

7

ตามที่ petersohn กล่าวว่าสิ่งที่คล้ายกับ:

  • ls -l | awk '{print $3, $4, $8, $0}' | sort | column -t
    เพิ่ม$8และcolumn -tสำหรับการพิมพ์สวย

หรือดีกว่า:

  • ls -l | sort -k 3 - เรียงลำดับตามเจ้าของและโดยค่าเริ่มต้นจะเรียงลำดับฟิลด์ถัดไป (กลุ่ม) และเปิด
  • ls -l | sort -k 4,4 -k 3 - เรียงลำดับตามกลุ่มแล้วโดยเจ้าของ
  • ls -l | sort -k 3,3 -k 8 - เรียงลำดับโดยเจ้าของแล้วตามด้วยชื่อไฟล์

หมายเหตุ:เครื่องหมายจุลภาคเป็นฟิลด์เทอร์มิเนเตอร์ดังนั้น3,3เริ่มและสิ้นสุดที่ฟิลด์ 3 3,5เรียงจากฟิลด์ 3 ถึง 5


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