ฉันจะแสดงรายการไดเรกทอรีด้วย ls และเรียงลำดับโดยเจ้าของและกลุ่มได้อย่างไร
ฉันจะแสดงรายการไดเรกทอรีด้วย ls และเรียงลำดับโดยเจ้าของและกลุ่มได้อย่างไร
คำตอบ:
ลองสิ่งนี้:
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
อาจมีโซลูชั่นที่ดีกว่าและซับซ้อนกว่า แต่นี่เป็นวิธีที่ง่ายที่สุดและจะใช้งานได้เกือบตลอดเวลา
ตามที่ 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