![파일 이름에서 특정 단어를 제거하는 방법은 무엇입니까?](https://linux55.com/image/195148/%ED%8C%8C%EC%9D%BC%20%EC%9D%B4%EB%A6%84%EC%97%90%EC%84%9C%20%ED%8A%B9%EC%A0%95%20%EB%8B%A8%EC%96%B4%EB%A5%BC%20%EC%A0%9C%EA%B1%B0%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
내 파일은 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