MV 및 날짜 추가 관련 문제

MV 및 날짜 추가 관련 문제

$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

관련 정보