디렉토리 목록을 알파벳 역순으로 정렬하려고 합니다.
왜 무작위 주문을 받나요?
ls -l /usr/bin/ | sort -r
편집: 명령 정렬을 사용해야 했습니다.
답변1
ls
정리 해보자 :
ls -l -r /usr/bin
그렇지 않으면
ls -lr /usr/bin
목록을 반대 순서로 정렬 하는 표준 -r
옵션 입니다. 수정 타임스탬프를 정렬하는 데 사용 ls
하도록 요청하면 목록의 순서도 반대로 됩니다.ls
-t
-r
명령 파이프라인은 출력의 권한, 소유권 등을 기준으로 정렬되며 ls -l
두 항목에 대해 다른 모든 정보가 동일하지 않으면 파일 이름은 고려되지 않습니다.
이런 건 물어보시지 않았지만 흔한 일이고 보통 출력 정렬에 대해 물어본 후 다음 단계이기 때문에 ls
... 실제로 처음이나 마지막으로 정렬된 디렉터리 목록에서 파일 이름을 추출하려면,사용하지 마세요ls
, 대신 배열 또는 위치 매개변수를 사용하세요.
첫 번째 파일 이름:
names=(/usr/bin/*)
printf '%s\n' "${names[0]}"
또는
set -- /usr/bin/*
printf '%s\n' "$1"
최종 파일 이름:
names=(/usr/bin/*)
printf '%s\n' "${names[-1]}"
또는
set -- /usr/bin/*
shift "$(( $# - 1 ))"
printf '%s\n' "$1"
마찬가지로 가장 최근에 수정된 파일(또는 디렉터리)을 얻는 가장 좋은 방법 bash
은 다음과 같습니다 .
set -- /usr/bin/*
newest=$1; shift
for pathname do
[ "$pathname" -nt "$newest" ] && newest=$pathname
done
printf 'Newest: %s\n' "$newest"
가장 오래된(가장 최근에 수정된) 파일을 가져오도록 -nt
테스트 를 변경합니다 .-ot
답변2
전체 문자열을 키로 사용하여 정렬하려고 합니다.
객체 이름은 9열에 기록되므로 다음을 사용해야 합니다.
ls -l /usr/bin/ | sort -k9 -r