파일 이름에 날짜와 시간을 어떻게 넣습니까?


23

명령을 실행하려고하는데 출력 파일 이름에 날짜와 시간을 넣고 싶습니다.

다음은 실행하려는 샘플 명령입니다.

md5sum /etc/mtab > 2016_4_25_10_30_AM.log

날짜 시간 형식은 밑줄로 구분할 수 있습니다. AM과 PM을 사용할 수없는 경우 UTC도 가능합니다.


Bash가 아니라면 어떤 쉘을 사용하고 있습니까?
Ryan

아 bash ... 나는 bash script *를 의미했다
visc

파이핑하지 않고 리디렉션 중입니다. 리디렉션하지 않으면 질문이 동일합니다. 제목 업데이트 중
Mikel

답변:


46

현재 날짜 시간을 파일 이름으로 사용하려면 date대체 명령을 사용할 수 있습니다 .

 $ md5sum /etc/mtab > "$(date +"%Y_%m_%d_%I_%M_%p").log"

이로 인해 2016_04_25_10_30_AM.logmd5 해시를 /etc/mtab내용으로 하여 파일을 작성합니다 (현재 날짜 시간에도 불구하고) .

12 시간 형식 타임 스탬프를 포함하는 파일 이름은 이름을 기준으로 정렬하지 않을 수도 있습니다. 대신 24 시간 형식 타임 스탬프를 사용하면이 문제를 피할 수 있습니다.

특정 날짜 형식을 사용할 필요가없는 경우 ISO 8601 호환 날짜 / 시간 형식 사용을 고려할 수 있습니다. 유효한 ISO 8601 날짜 / 시간 표현을 생성하는 방법에 대한 몇 가지 예는 다음과 같습니다.

 $ date +"%FT%T"
 2016-04-25T10:30:00

 $ date +"%FT%H%M%S"
 2016-04-25T103000

 $ date +"%FT%H%M"
 2016-04-25T1030

 $ date +"%Y%m%dT%H%M"
 20160425T1030

"safer"파일 이름을 원하면 (예 : Windows와의 호환성을 위해) 시간 부분에서 콜론을 생략 할 수 있습니다.

위의 예는 모두 로컬 시스템 시간을 가정합니다. 시간대간에 일관성있는 시간대 표시가 필요한 경우 시간대 오프셋 또는 UTC를 지정해야합니다. 다음 date과 같이 호출 형식 부분에서 "% z"를 사용하여 ISO 8601 호환 표준 시간대 오프셋을 얻을 수 있습니다 .

 $ date +"%FT%H%M%z"
 2016-04-25T1030-0400

플래그 date를 지정 -u하고 날짜 / 시간 문자열 끝에 "Z"를 추가하여 시간이 UTC와 같음을 표시 하면 UTC 시간을 얻을 수 있습니다 .

 $ date -u +"%FT%H%MZ"
 2016-04-25T1430Z

@Mikel 당신과 내가 교차 편집 했습니까?
Ryan

혹시. 방금 "subshell"을 "command replacement"로 변경했습니다. 이제 끝났으니 원하는대로 편집하십시오.
Mikel

@Mikel 문제 없습니다. 지금 수정 사항을 다시 제출했습니다.
Ryan

@Mikel 걱정 마세요! 어쨌든 그것을 "명령 대체"라고 부르는 것을 기억해야합니다. 답변을 개선해 주셔서 감사합니다!
Ryan

3
밑줄은 이상한 문자입니다. 같은 ISO-8601을 사용하는 것이 바람직하다 $(date +%FT%T)있는 줄 것이다 2016-04-25T10:30:00.
hschou
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.