파일 이름에서 특정 단어를 제거하는 방법은 무엇입니까?

파일 이름에서 특정 단어를 제거하는 방법은 무엇입니까?

내 파일은 import/images 디렉터리에 있습니다.

Documents\ProductImages\1.jpg
Documents\ProductImages\2.jpg
Documents\ProductImages\3.jpg

파일 이름에서 어떻게 Documents\ProductImages\제거할 수 있나요?

답변1

다음을 시도해 볼 수 있습니다.

for i in 'Documents\ProductImages\'*.jpg; do mv -n -- "$i" "${i##*\\}"; done

확장은 ${i##*\\}패턴과 일치하는 가장 긴 접두사를 제거합니다. 여기서는 마지막 백슬래시까지의 모든 항목을 다른 백슬래시로 이스케이프해야 합니다.

답변2

rename시스템에 하나가 있다면 일반적으로 이런 종류의 작업에 적합한 도구입니다.

두 가지 가능한 버전이 있다는 것을 알고 있습니다. 구문은 다르지만 둘 다 귀하의 예에서 작동합니다.

Red Hat 시리즈에 일반적으로 배포되는 버전은 다음과 같습니다.

rename 'Documents\ProductImages\' '' *.jpg

다른 버전에서는 이 작업을 수행할 수 있습니다.

rename 's/.*\\//' *.jpg

이는 마지막 부분 이후의 부분만 유지하려고 한다고 가정합니다 \. 좀 더 구체적으로 알고 싶다면:

rename 's/^Documents\\ProductImages\\//' *.jpg

관련 정보