쉘에서 파일 이름의 시작과 끝을 제거하십시오.

쉘에서 파일 이름의 시작과 끝을 제거하십시오.

내 모바일 스크린샷의 이름을 다음으로 바꾸고 싶습니다 Screenshot_2020-08-06-16-13-43-731_com.tclhz.gallery.jpg.2020-08-06.jpg

파일 이름의 고정 부분에 대해 첫 번째 문자 N개와 마지막 문자 N개를 제거할 수 있도록 일반화하고 싶습니다.

우리는 그것에 대해 무엇을 할 수 있나요?

감사해요!

답변1

당신은 그것을 사용할 수 있습니다쉘 문자열 조작기능. 파일 이름이 변수에 저장되어 있다고 가정하면 name다음 두 줄은 첫 번째 밑줄 앞의 모든 항목을 제거한 다음 -hh-mm-ss해당 부분으로 시작하는 모든 항목을 제거합니다. 그런 다음 파일 확장자를 수동으로 다시 추가하십시오.

newname="${name#*_}"
newname="${newname%-??-??-??-*}.jpg"

그런 다음 명령을 실행할 수 있습니다

mv "$name" "$newname"

파일 이름을 바꿉니다.

예:

$ name="Screenshot_2020-08-06-16-13-43-731_com.tclhz.gallery.jpg"
$ newname="${name#*_}"; newname="${newname%-??-??-??-*}.jpg"; echo "$newname"
2020-08-06-16.jpg

현재 디렉토리의 전체 내용을 처리하려면 다음을 수행하십시오.

for name in *.jpg
do
    newname="${name#*_}"
    newname="${newname%-??-??-??-*}.jpg"
    mv "$name" "$newname"
done

관련 정보