$oldfile을 백업 폴더로 이동하고 파일 이름에 날짜를 추가할 수 있기를 원합니다. 그래서 이걸 시도해봤는데...
mv $oldfile /home/u0146121/backupfiles/$oldfile_$(date +%F-%T)
이것은 나에게 이 출력 파일 이름을 제공합니다. (원본 파일 이름 없음)
2013-07-11-10:22:25
그런 다음 위의 접근 방식에 잠재적인 문제가 있음을 깨달았습니다. 비교하려는 다른 파일에 대한 경로 이름이 있는 텍스트 파일을 읽는 동안 읽는 동안 루프가 있습니다. 예를 들어 $oldfile은 실제로 =입니다.
$ cat oldfiles.txt
/home/u0146121/OldLogFiles/file2.txt
그래서...file2.txt를 이동하고 file2.txt 이름만 유지하고 날짜를 추가할 수 있기를 원합니다.
답변1
쉘은 정의되지 않은 변수를 봅니다 $oldfile_
. 를 사용하여 이 문제를 해결할 수 있습니다 ${oldfile}_
.
하지만 정말로 이전 파일의 경로를 유지하시겠습니까? 그렇지 않은 경우
mv $oldfile /home/u0146121/backupfiles/${oldfile##*/}_$(date +%F-%T)
답변2
Bash에서 파일을 이동할 때 타임스탬프를 추가하는 솔루션은 다음과 같습니다.
#!/usr/bin/env bash
cd "FILES_LOCATION"
COPYDIR="NEW_FILE_LOCATION"
for file in *.FILE_EXTENSION; do
NEWAPPEND=$(date +%s)
cp $file "$COPYDIR"/"$NEWAPPEND"$file
rm $file
done