명령을 실행하려고 하는데 출력 파일 이름에 날짜와 시간을 입력하고 싶습니다.
다음은 실행하려는 샘플 명령입니다.
md5sum /etc/mtab > 2016_4_25_10_30_AM.log
날짜/시간 형식은 밑줄이 있는 적절한 형식이 될 수 있습니다. AM과 PM을 사용할 수 없는 경우 UTC도 사용할 수 있습니다.
답변1
현재 날짜/시간을 파일 이름으로 사용하려면 다음을 사용할 수 있습니다 date
.명령 대체.
$ md5sum /etc/mtab > "$(date +"%Y_%m_%d_%I_%M_%p").log"
2016_04_25_10_30_AM.log
이로 인해 /etc/mtab
md5 해시를 해당 콘텐츠로 사용하여 파일이 생성됩니다(비록 현재 날짜/시간임에도 불구하고).
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
"더 안전한" 파일 이름을 원하는 경우(예: Windows와의 호환성을 위해) 시간 부분에서 콜론을 생략할 수 있습니다.
위의 예에서는 로컬 시스템 시간을 가정합니다. 여러 시간대에 걸쳐 일관된 시간 표현이 필요한 경우 시간대 오프셋 또는 UTC를 지정해야 합니다. date
다음과 같이 호출의 형식 부분에 "%z"를 사용하여 ISO 8601 호환 시간대 오프셋을 얻을 수 있습니다 .
$ date +"%FT%H%M%z"
2016-04-25T1030-0400
다음과 같이 플래그를 지정하고 날짜/시간 문자열 끝에 "Z"를 추가하여 시간이 UTC임을 나타내면 date
호출에서 UTC 시간을 얻을 수 있습니다 .-u
$ date -u +"%FT%H%MZ"
2016-04-25T1430Z
답변2
선택한 날짜 문자열을 경로/파일 이름 중간에 삽입하는 데 필요한 (복잡한) 구문에 대한 설명을 추가하기만 하면 됩니다. 이는 모든 명령에서 작동하므로 파일을 새 위치에 복사하고 파일 이름에 타임스탬프를 추가하는 방법을 보여 드리겠습니다.
cp filename.txt /path/to/copyfile/$(date +"%FT%H%M")-newfilename.txt
날짜 +"%F에 공백이 있음에도 불구하고 newfilename 표현식 주위에 따옴표가 필요하지 않습니다. 실제로 쉘이 구문 분석하는 방식으로 인해 이러한 따옴표를 포함하면 crontab 행에 포함된 경우 명령이 작동하지 않게 됩니다. .
답변3
for file in *.mp4;
do
dt=$(date -r "$file" "+%Y%m%d-%H%M%S")
mv "$file" "$dt - $file"
done
이 Bash 스크립트는 현재 폴더의 모든 mp4 파일을 가져오고 원래 이름 앞에 파일의 수정 날짜와 시간을 추가합니다.
귀하의 요구에 적응하십시오.