-
다음과 같은 방법으로 특정 폴더의 파일 이름을 일괄적으로 바꾸고 마지막 부분 뒤의 부분을 제거하고 싶습니다 .
hello world - Mr Sheep
에게hello world
super user - question on super user.docx
에게super user.docx
abc - def - ghi jkl.pdf
에게abc - def.pdf
저는 명령줄 솔루션을 선호하지만 다른 옵션도 괜찮습니다.
답변1
bash에서와 같이 마지막 -
사용을 제거하려면 변수 끝에서 가장 짧은 패턴이 제거됩니다. 자세한 내용은 다음을 참조하세요.${f% - *}
${var%Pattern}
매개변수 대체. 결과는 이렇습니다
for f in path/*
do
if [[ $f = *.* ]]; then ext=".${f##*.}"; else ext=""; fi
echo mv "$f" "${f% - *}$ext"
done
새 파일 이름이 올바른지 확인한 후 제거 echo
하여 실제 이름을 바꿀 수 있습니다. 데모:
$ for f in "hello world - Mr Sheep" "super user - question on super user.docx" "abc - def - ghi jkl.pdf"; do if [[ $f = *.* ]]; then ext=".${f##*.}"; else ext=""; fi; echo mv "'$f'" "'${f% - *}$ext'"; done
mv 'hello world - Mr Sheep' 'hello world'
mv 'super user - question on super user.docx' 'super user.docx'
mv 'abc - def - ghi jkl.pdf' 'abc - def.pdf'