ls, 날짜 표시 설정.

데비안 계열에서, ls -l 을 하면 이런 형태로 날짜가 보인다.

$ ls -l
total 976
drwxr-xr-x 2 root     root      4096 10월  5  2018 ImageMagick-6
drwxr-xr-x 8 root     root      4096 11월  6  2018 NetworkManager
drwxr-xr-x 8 root     root      4096  8월  8  2018 X11
-rw-r--r-- 1 root     root      3028  6월  7  2017 adduser.conf
....

10월, 11월, 이렇게 표시되는 ‘달 이름’이 전부터 맘에 들지 않았다. October 를 번역하면 10월이 맞긴 하지만, October 5 를 우리말로 적절히 표기한다면, ’10월 5일’ 이지, ’10월 5’는 아니기 때문이다.

Android 에도 이런 문제는 있었는데, 최근엔 내 눈에 띈 적이 없는 걸로 봐선, 소스단에서 수정이 됐든가, 아니면 각 단말기 개발사들이 신경을 썼든가, 둘 중 하나가 아닐까.

저기에, 결벽증을 드러내며 ‘일’字를 넣고 싶다면, 다음과 같은 방법을 쓸 수 있다.
ls 는 –time-style 이라는 선택사항을 가지고 있는데, 여기에 적절한 인수를 넣으면 원하는 결과를 얻을 수 있다.

$ ls --time-style='+%b %d일' -l /etc
total 976
drwxr-xr-x 2 root     root      4096 10월 05일 ImageMagick-6
drwxr-xr-x 8 root     root      4096 11월 06일 NetworkManager
drwxr-xr-x 8 root     root      4096  8월 08일 X11
-rw-r--r-- 1 root     root      3028  6월 07일 adduser.conf
...

’10월 5′ 등을 보다보면, 어쩐지 뭔가 모자란 듯한 느낌을 받고, 특히나 날짜를 본다는 생각이 안들 때가 종종 있었다. 이렇게 ‘일’을 넣어주니 눈에 보기엔 훨씬 편하다.

아니면, 차라리 ‘연-월-일’ 형식으로 해주면 어떨까?
이건 굳이 저렇게 복잡한 인수를 넣어줄 필요없이, 간단하게 처리할 수 있다.

$ ls --time-style=long-iso -l /etc
total 976
drwxr-xr-x 2 root     root      4096 2018-10-05 13:19 ImageMagick-6
drwxr-xr-x 8 root     root      4096 2018-11-06 01:24 NetworkManager
drwxr-xr-x 8 root     root      4096 2018-08-08 00:13 X11
-rw-r--r-- 1 root     root      3028 2017-06-07 19:51 adduser.conf
-rw-r--r-- 1 root     root        51 2019-01-24 10:43 aliases
-rw-r--r-- 1 root     root     12288 2019-01-24 10:43 aliases.db
drwxr-xr-x 2 root     root      4096 2019-05-17 00:24 alternatives
...

$ ls --time-style=iso -l /etc
total 976
drwxr-xr-x 2 root     root      4096 2018-10-05  ImageMagick-6
drwxr-xr-x 8 root     root      4096 2018-11-06  NetworkManager
drwxr-xr-x 8 root     root      4096 2018-08-08  X11
-rw-r--r-- 1 root     root      3028 2017-06-07  adduser.conf
-rw-r--r-- 1 root     root        51 01-24 10:43 aliases
-rw-r--r-- 1 root     root     12288 01-24 10:43 aliases.db
drwxr-xr-x 2 root     root      4096 05-17 00:24 alternatives
...

–time-style 뒤에는 full-iso, long-iso, iso, locale 등의 미리 정의된 인수들이 있고, 아니면 +FORMAT 으로, date 에 사용하는 형식을 그대로 쓸 수도 있다.

ls man page 에는 이렇게만 나와있어서, 각각의 차이가 어떤 지는 실제로 돌려보고 느끼는 수밖엔 없는 듯 한데..

  • full-iso : 연월일, 시간(11:22:22.742063715 이렇게 자세하게), 시간대.
  • long-iso : 연월일. (연도는 4자리)
  • iso : 연월일(올해 이전. 연도 4자리), 월일 시간. (올해)
  • locale : 월일년(올해 이전. 연도 4자리), 월일 시간. (올해)

눈에 편하게 쓰려면, long-iso 가 그런대로 맞는 듯 하다.
(리눅스 쓴 지 이제 10년인데, 이걸 이제서야 알아내다니…)


다만, 기본 설정만으로는 연도수를 두자리로 할 수는 없다. 그를 위해서는 직접 FORMAT 을 설정해줘야 한다.
%y 는 연도 뒷 두자리, %Y 는 4자리.

$ ls --time-style='+%y-%m-%d' -l /etc
total 976
drwxr-xr-x 2 root     root      4096 18-10-05 ImageMagick-6
drwxr-xr-x 8 root     root      4096 18-11-06 NetworkManager
drwxr-xr-x 8 root     root      4096 18-08-08 X11
-rw-r--r-- 1 root     root      3028 17-06-07 adduser.conf
-rw-r--r-- 1 root     root        51 19-01-24 aliases
-rw-r--r-- 1 root     root     12288 19-01-24 aliases.db
...

date 형식에 대해서는 man page 참고.

매번 이렇게 쓸 수는 없고, alias 를 만들어두면 편리하다.
다만, ls 관련 alias 들이 이미 정의되어 있을 수 있으므로, 가장 최 상단에 위치시켜야 아래 쪽에서도 같은 결과를 얻을 수 있다.

Tags:,

안녕하세요. 글 남겨주셔서 고맙습니다.