Unix 또는 Linux에서 타임 스탬프를 dd / mm / yyyy_hh : mm : ss : ms로 표시


26

Unix / Linux에서 날짜와 시간을 원하는 형식으로 표시해야합니다. 원하는 형식은 Unix 또는 Linux에서 dd / mm / yyyy hh : mm : ss : ms입니다. 다음 명령을 사용하여 닫았습니다.

echo $(date +%x_%r)

이것은 다음을 반환합니다.

08/20/2012_02:26:14 PM

어떤 제안?


2
당신이 사용하는 이유가 echo있습니까? 중복되는 것 같습니다. date직접 사용할 수도 있습니다
lk-

현재 시간을 매개 변수에 저장하여 출력 파일 이름의 일부로 사용하려고합니다.
행크

6
ISO 형식의 날짜 문자열을 사용하지 않는 이유는 무엇입니까? 그 / 파일 이름이 좋지 않습니다 ... ( en.wikipedia.org/wiki/ISO_8601 )
Johan


가장 일반적인 형식 : zxq9.com/archives/795
zxq9

답변:


26
date +%x_%H:%M:%S:%N

ms로 두 개의 첫 번째 숫자 만 인쇄해야하는 경우 :

date +%x_%H:%M:%S:%N | sed 's/\(:[0-9][0-9]\)[0-9]*$/\1/'

var에 저장하려면 :

VAR=$(date +%x_%H:%M:%S:%N | sed 's/\(:[0-9][0-9]\)[0-9]*$/\1/')

1
이것은 리눅스 고유의 것입니다. OS X 또는 * BSD에서는 작동하지 않습니다.
cnst

참고 % x는 로캘의 날짜 표현을 반환합니다. 따라서 현재 로케일에 따라 변경 될 수 있습니다. 특정 날짜 형식을 원한다면 명시 적으로 제공하는 것이 좋습니다 (다른 답변도 아래에 나와 있음) date +'%d/%m/%Y_%H:%M:%S:%N.
studgeek

23

대신 나노 정밀도의 밀리 초를 원하는 경우에, 당신은 사용할 수 있습니다 %3N대신 %N:

$ date +'%d/%m/%Y %H:%M:%S:%3N'
12/04/2014 18:36:20:659

또는 원하는 용도로 $(…):

$ echo "$(date +'%d/%m/%Y %H:%M:%S:%3N')"
12/04/2014 18:36:20:659

그러나 %N대상 시스템 또는 bash 버전에 따라 구현되지 않을 수 있습니다. 임베디드 시스템»GNU bash, 버전 4.2.37 (2)-릴리스 (arm-buildroot-linux-gnueabi)에서 테스트되었습니다« %N( 없음 %3N) :

date +"%F %T,%N"
2014-01-08 16:44:47,%N

2
보이는 FreeBSD의도 맥 OS X도 지원 %N%3N.
Joe

추가 echo "$(date +'%F %H:%M:%S:%3N') Failed" >> logfile.txt했지만 file.file 08:21:02OURCE:184 Failed로그 파일에 썼습니다 . 내가 뭘 잘못 했어?
Sven



0

이 같은

날짜 + '% d / % m / % Y_ % H : % M : % S : % N'

지금은 밀리 초를 찾지 못했기 때문에 나노초 (000000000..999999999)에 % N을 사용했습니다.


0

당신은 시도 할 수 있습니다:

echo `date +"%Y_%m_%d %H:%M:%S,"``date +%N/1000000|bc -l|grep -Eo "^([0-9]{0,3})"`

어떤 이유로 '`'가 생략되었으므로 에코 다음과 끝에 또는 간단히 다음과 같이 입력하십시오.

date +"[%Y_%m_%d %H:%M:%S,%3N]"
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.