Linux 쉘에서 "2015120"의 날짜 형식을 어떻게 표현합니까?

Linux 쉘에서 "2015120"의 날짜 형식을 어떻게 표현합니까?

내 동료가 날짜 형식이 앞에 추가된 로그 파일을 생성하고 있습니다 2015120. 예를 들어 1대신 1월을 나타냅니다 01.

이런 종류의 문제를 처리하는 일반적인 방법은 datecommand.Like 를 사용하는 것입니다 date +'%Y%m%d'. 그러나 나는 date 명령을 사용했고 그것이 1월을 나타낸다고 언급하지 않았으며 앞에 0이 없다는 것을 발견했습니다.

2015120그래서 Linux 처럼 날짜를 표현하는 다른 방법이 있는지 궁금합니다 .

답변1

GNU, FreeBSD 또는 OS/X date(또는 GNU인 date시스템 libc구현 사용 ) 의 경우 후행 하이픈을 추가하면 숫자 필드가 0으로 채워지는 것을 방지할 수 있습니다.strftime()libc-%

$ date +'%Y%-m%d'
2015120

~에서승인하다GNU 시스템에서:

기본적으로 날짜는 숫자 필드를 0으로 채웁니다. 다음 선택적 플래그는 "%" 뒤에 올 수 있습니다.

-(하이픈) 이 필드를 채우지 마십시오.

시스템이 date이를 지원하지 않으면 다음을 사용할 수 있습니다 perl.

$ perl -MTime::Piece -e '
  $t = localtime;
  print $t->year, $t->mon, $t->mday;
'
2015122

답변2

> date +'%Y %m %d' | ( read year month day; echo "${year}${month#0}${day}" )
2015120

답변3

하이픈(-) 뒤에 (1)을 추가하면 Linux에서 실행될 수 있으며 다음으로 포팅될 수도 있습니다.HP-UX(다른 종류의 UNIX가 있을 수 있습니다):

$ date +'%Y%-1m%d'
2015120

관련 정보