파일을 복사하고 타임 스탬프를 추가하십시오


13

스크립트에 파일을 복사하고 이름에 타임 스탬프를 추가하는 두 가지 문제가 있습니다.

cp -ra /home/bpacheco/Test1 /home/bpacheco/Test2-$(date +"%m-%d-%y-%T")

Test2의 파일 이름으로 추가 하지만이 예제에서 이름이 원래 소스 파일의 파일 이름을 유지하고 싶습니다 Test.

cp -ra /home/bpacheco/Test1 /home/bpacheco/Test2-$(date +"%m-%d-%y-%r")

다른 문제는 %r타임 스탬프 코드를 대상 "PM"이 디렉토리가 아니라는 오류가 발생한다는 점입니다. 타임 스탬프를 12 시간 시계 시간으로 가져 오려고합니다.


AM / PM을 추가하면 파일 이름에 추가 공간이 추가됩니다. cp -ra / home / bpacheco / Test1 "/ home / bpacheco / Test2-$ (date + % m- % d- % y- % r)"
Romeo Ninov

2
또는date +"%m-%d-%y-%I:%M:%S_%p"
don_crissti

답변:


12

문제 중 하나는 명령 대체에 큰 따옴표를 생략했기 때문에 명령의 출력 date이 공백으로 분할되었다는 것입니다. 왜 쉘 스크립트가 공백이나 다른 특수 문자에서 질식합니까?를 참조하십시오 . 유효한 명령입니다.

cp -a /home/bpacheco/Test1 "/home/bpacheco/Test2-$(date +"%m-%d-%y-%r")"

원래 파일 이름에 추가하려면 변수에 파일 이름이 있어야합니다.

source=/home/bpacheco/Test1
cp -a -- "$source" "$source-$(date +"%m-%d-%y-%r")"

bash를 사용하는 경우 대신 괄호 확장을 사용할 수 있습니다.

cp -a /home/bpacheco/Test1{,"-$(date +"%m-%d-%y-%r")"}

파일을 다른 디렉토리에 복사하고 타임 스탬프를 원래 파일 이름에 추가하려면 다음과 같이하면 ${source##*/} 됩니다source . 부분없이 마지막 부분까지 값을 확장 합니다 /(패턴과 일치하는 가장 긴 접두사 제거) */) :

source=/home/bpacheco/Test1
cp -a -- "$source" "/destination/directory/${source##*/}-$(date +"%m-%d-%y-%r")"

Test1디렉토리 인 경우 디렉토리가 재귀 적으로 복사되고 디렉토리 내의 파일 이름이 유지됩니다. 최상위 디렉토리 만 타임 스탬프가 추가됩니다 (예 : Test1/foo에 복사 됨 Test1-05-10-15-07:19:42 PM). 모든 파일 이름에 타임 스탬프를 추가하려면 다른 문제입니다.

타임 스탬프 형식을 선택하는 것은 나쁜 생각입니다. 사람이 읽기 어렵고 정렬하기가 어렵습니다. 읽기 쉽고 더 쉽게 정렬 할 수있는 형식 (예 : 연도, 월, 일,시, 분, 초)으로 날짜 부분과 시간 부분을 구분하는 형식으로 사용해야합니다.

cp -a /home/bpacheco/Test1 "/home/bpacheco/Test2-$(date +"%Y%m%d-%H%M%S")"
cp -a /home/bpacheco/Test1 "/home/bpacheco/Test2-$(date +"%Y-%m-%dT%H%M%S%:z")"

첫 번째 명령 인 Gilles는 IMHO에서 작동하지 않습니다. 큰 따옴표의 위치를 ​​확인하십시오. 질문에 대한 내 의견을보십시오
Romeo Ninov

@RomeoNinov 첫 번째 명령에 어떤 문제가 있습니까? 그것을 실행하고 오류가 발생 했습니까?
Gilles 'SO- 악마 그만해'

맞습니다, 날짜 명령은 서브 쉘에서 실행됩니다
Romeo Ninov

Gilles, 위의 예를 사용하면 위에서 언급 한 타임 스탬프 정보가있는 파일을 다른 디렉토리에 어떻게 복사합니까? 다음 명령이 작동하지 않습니다.cp -a /home/bpacheco/Test1/Test{,"-$(date +"%m-%d-%y-%r")"} /home/bpacheco/Test2
Brian

@Brian 나는 당신의 의견을 이해하지 못했지만 내 편집 내용을 참조하십시오.
Gilles 'SO- 악마 중지'
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.