파일 이름을 바꾸되 이름에 파일의 원래 타임스탬프를 유지하세요.

파일 이름을 바꾸되 이름에 파일의 원래 타임스탬프를 유지하세요.

수백 개의 파일이 포함된 목록이 있습니다. 현재는 다음과 같습니다.

filename.New_20160901.dat
filename.New_20160902.dat
...

까지 기다리세요

filename.New_<current date>.dat

현재 로그인 디렉터리에서 파일을 가져오려는 프로세스가 있지만 파일 이름 형식이 완전히 다릅니다.

내가하고 싶은 것은 파일 이름을 바꾸되 날짜는 유지하는 것입니다. 예를 들어 파일을 변경한다면 다음과 같습니다.

$ mv filename.New_20160902.dat FILE_NAME_NEW.20160902.dat

하나의 파일에 대해서는 쉽지만 일련의 파일에 대해서는 어떻게 수행합니까? 이전 파일 이름의 날짜 부분을 추출하여 변수로 저장하고 mv이전 파일을 새 파일 이름으로 새 파일에 저장하고 날짜 부분은 동일하게 유지하고 싶습니다.

감사해요

답변1

노력하다

rename -n s/filename.New_/FILE_NAME_NEW./ filename.New*

제안된 이름 바꾸기에 동의하는 경우 실행할 필요가 없습니다.-n

답변2

이런 것을 시도해 보세요

for x in *; do
    mv "${x}" FILE_NAME_NEW."${x#filename.New_}"
done

echomv파일 이름을 바꾸기 전에 효과를 확인할 수 있도록 먼저 사용하십시오 . "${x}"는 파일 이름이 있는 변수(예: filename.New_20160901.dat)이고 "${x#filename.New_}"는 시작 부분에 있는 경우 삭제된 파일 이름 filename.New_(예: 20160901.dat)입니다.

답변3

타임스탬프가 포함된 파일(다른 파일 제외)을 일치시키려면 다음을 사용하세요.

#!/bin/bash 

for x in filename.New_[0-9]*.dat; do
    echo "file --> $x"

    echo    mv "${x}" "${x/filename.New_/FILE_NAME_NEW.}"
done

실제로 이동을 수행하려면 (스크립트에서 선택한 파일에 만족한 후) mv 앞의 에코를 제거하세요.

관련 정보