osx의 ls 명령 행에서 사용하는 시간 형식을 어떻게 변경합니까? 시간을 표시하도록 할

ls표시 시간을 ISO형식 (군사 형식)으로 만들고 싶습니다 . 이 동작을 어떻게 변경할 수 있습니까?

Linux에서는 ls를 사용하여 ls가 긴 형식으로 시간을 표시하도록 할 수 --full-time있지만 OS X에서는 작동하지 않습니다.

업데이트 : 명령에서 사용하는 형식이 locale설정을 기반으로한다는 것을 알고 있습니다. 문제는 OS XI에서 설정 트릭을 사용할 수 없다는 것 LC_TIME=en_DK입니다.



답변

gnu coreutils를 설치하면 gnu ls를 사용할 수 있으며 필요에 따라 수행됩니다. brew를 패키지 관리자로 사용하는 경우 다음과 같이 간단합니다.

brew install coreutils
gls -l --time-style=full-iso


답변

OS X의 내장 ls명령은 시간 형식 인수를 사용하지 않지만 stat명령은 strftime 형식 문자열을 사용하므로 다음을 수행하여 원하는 것을 대략적으로 얻을 수 있습니다.

stat -l -t '%FT%T' *

%FT%TISO8601 지역의 타임 스탬프를 생성합니다. %zUTC 오프셋을 원하면를 추가하십시오 .

그러나 타임 스탬프가 옳은 반면 나머지는 ls에서 얻는 것만 근사합니다. 예를 들어, ls -l필드를 열에 올바르게 정렬하고 출력을 채색 할 수 있으며 물론 모든 파일 이름을 인수로 전달하지 않고 디렉토리 내용을 나열합니다. tr모든 공간을 탭으로 변환하기 위해 출력을 파이핑하여 최소한 올바른 정렬을 재현 할 수 있습니다 .

stat -l -t '%F%T' * | tr ' ' \\t

또는 ls -l사용자 지정 로캘을 정의하여 ISO8601 타임 스탬프를 생성 할 수 있어야한다고 생각 했지만 완료하지는 못했습니다.


답변

ls -l --time-style=iso 나를 위해 잘 작동합니다.


답변