동적 파일 확장자를 고정 파일 확장자로 대체

동적 파일 확장자를 고정 파일 확장자로 대체

특정 날짜 타임스탬프가 포함된 동적 파일 확장자를 고정된 파일 확장자로 바꿔야 합니다.

예를 들어,

08242016G0040156.ZIP.20160907141452  
09042016SHOC0003.ZIP.20160904044504 

08242016G0040156.ZIP각각 및 으로 바꿔야 합니다 09042016SHOC0003.ZIP.

답변1

문자열 조작이 포함된 간단한 루프인 bash를 사용하여

for f in ./*.ZIP.*
do
   mv "$f" "${f%.*}"
done

"${f%.*}".문자열에서 이후의 모든 항목(마지막 항목 포함)을 삭제합니다 $f.

답변2

for filename in $(find . -name '*ZIP*'); do mv $filename $(echo $filename | sed 's|\(.*\)\.ZIP.*|\1.ZIP|g') ; done

답변3

perl기본 명령을 사용하십시오 rename.

$ touch 08242016G0040156.ZIP.20160907141452 09042016SHOC0003.ZIP.20160904044504

$ rename -n 's/\.\d+$//' *ZIP*
rename(08242016G0040156.ZIP.20160907141452, 08242016G0040156.ZIP)
rename(09042016SHOC0003.ZIP.20160904044504, 09042016SHOC0003.ZIP)

-n시험 실행 옵션. 이름 변경이 괜찮다면 실제 이름 변경을 위해 제거하세요.


파일이 여러 하위 디렉터리에 있을 수 있는 경우 다음을 사용하세요.find

find -name '*ZIP*' -exec rename -n 's/\.\d+$//' {} +


.마지막 사용 이후 숫자 이외의 문자가 있는 경우

rename -n 's/\.[^.]+$//' *ZIP*

관련 정보