Linux에서 현재 날짜 및 시간 인 이름으로 파일을 만드는 방법


12

현재 날짜와 시간이 될 이름을 가진 파일을 만들고 싶습니다. touch명령 으로 파일을 만들 수 있습니다 . 또한 date명령으로 현재 시간을 얻을 수 있습니다 . 그래서 두 번째 명령을 첫 번째 명령으로 파이프해야한다고 생각합니다. 어떻게해야합니까?

답변:


19

쉘 표현식의 리턴 값을 touch다음에 대한 인수로 사용하십시오 .

touch $( date '+%Y-%m-%d_%H-%M-%S' )

결과 : 이름이 eg 인 파일 2012-03-11_14-33-53.

이 답변은 사용하고 있다고 가정하지만 bash( man페이지 섹션의 Command Substitution 참조 ) 다른 쉘은 동일하거나 약간 다르게 작동합니다.


@MdGao 그리고 매뉴얼 페이지의 같은 섹션에 설명되어 있습니다. 나는 대답을 더 좋아한다. 여기 몇 가지 이유가있다
Daniel Beck

Markdown이 백틱을 깨뜨 렸기 때문에 내 의견을 삭제했습니다. 링크 주셔서 감사합니다 @DanielBeck
Mengdi Gao

2
@gasan 그냥 "따옴표로 묶습니다. 당신의 출력 상상할 수있는 date명령 줄의 부품을 교체를하고, touch Sun Mar 11 14:48:31 CET 2012파일 이름을 만들 것 Sun, Martouch "Sun Mar 11 14:48:31 CET 2012"다른 한편으로는 (필자는 콜론이 어떻게 작동하는지 잘 모르겠어요 제외) 잘 작동합니다.
Daniel Beck

2
@gasan 작은 따옴표는 명령 대체 또는 다른 해석을 허용하지 않으므로 작동하지 않습니다. Bash 매뉴얼의 인용문 을 참조하십시오 .
slhck

2
@gasan 차이점은 작은 따옴표의 내용이 평가되지 않는다는 것입니다. 그것을 시도 echo "$HOME"하고 echo '$HOME'. 그래서 내가의 사용을 제안했습니다 ".
Daniel Beck

0

더 간단한 명령을 사용할 수 있습니다

touch $(date | tr ' ' '-')

다소 우아하지는 않지만 이식성이 떨어질 수도 있지만, 그래도 효과가 있습니다.
Scott

좋아, 나는 당신이 이것을 읽고 있다는 것을 알고 있기 때문에 좀 더 자세히 설명 할 것입니다. 다니엘의 대답은 알려지고 완전히 통제 된 형식으로 결과를 제공합니다. (1)의 출력은 date일반적으로 시간을 hh : mm : ss로 표시합니다. 대답은 콜론을 포함하는 파일 이름을 생성합니다. Windows 기반 파일 시스템에서 오류가 발생할 수 있습니다. (2) 간단한 호출의 원시 출력 date은 로케일에 따라 다릅니다. 즉, 현지 언어에 맞게 사용자 정의됩니다. 시도 LANG=de_DE date하고 LANG=fr_FR date예를 보십시오 . … (계속)
Scott

(계속)… (2a) 따라서 시스템에서 언어를 변경 한 적이 있거나 시스템 에서 시스템에 대해 구성된 사람 에게 스크립트 및 데이터 파일 모음을 제공하는 경우는 거의 없습니다. 다른 언어에서는 불일치가 있습니다. (이것이 실제 문제가 될지는 확실하지 않지만 미학적 문제가 될 것입니다.) (2b) 나는 이것을하는 로케일을 모르지만 이론적으로 date날짜를 쓰는 로케일이있을 수 있습니다 mm / dd / yy (또는 dd / mm / yy). … (계속)
Scott

(계속)… 그러한 시스템을 발견 한 경우 슬래시가 포함 된 파일 이름이 있으면 오류가 발생합니다. (3) Daniel의 대답은 ls또는 *에 의해 생성 된 사전 순 (즉, 알파벳순) 이 시간 순서대로 일치 하는 결과를 제공합니다 . 당신의 대답과 함께, 모든 Fri파일은 사전 식 정렬 된 목록의 시작 부분에있을 것이고, Apr그리고 Aug다른 모든 개월 전에 나타납니다.
Scott
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.