소유자와 그룹별로 ls를 어떻게 정렬 할 수 있습니까?


답변:


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에서 내 것을 시도했습니다.

더 정교하고 더 나은 솔루션이있을 수 있지만 가장 간단한 솔루션이며 대부분 작동합니다.



7

petersohn이 말했듯이 다음과 유사합니다.

  • ls -l | awk '{print $3, $4, $8, $0}' | sort | column -t
    추가 $8column -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.