특정 날짜 타임스탬프가 포함된 동적 파일 확장자를 고정된 파일 확장자로 바꿔야 합니다.
예를 들어,
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*