파일 이름에서 특정 단어 제거

파일 이름에서 특정 단어 제거

다음과 같은 폴더에 많은 파일이 있습니다.

compose_icon_200x200.png
mail_icon_200x200.png
attach_icon_200x200.png
delete_icon_200x200.png

모든 파일 이름에서 _200x200을 제거하고 싶습니다. 나는 열심히 노력했다

find . -name '*_200x200*' -exec bash -c 'mv "$0" echo $0' "{}" \;

하지만 다음과 같은 오류가 발생합니다.

./mail_icon_200x200.png: ./mail_icon_200x200.png: Permission denied

답변1

for f in *_200x200*; do
    mv -- "$f" "${f/_200x200/}"
done

또는 perl 명령이 있는 경우 rename:

rename 's/_200x200//' ./*_200x200*

답변2

그리고 zsh:

autoload zmv # best in ~/.zshrc
zmv -n '(**/)(*)_200x200(*.png)' '$1$2$3'

(행복하면 삭제 -n).

또는 모든 크기에 대해:

zmv -n '(**/)(*)_<->x<->(*.png)' '$1$2$3'

(각 파일 이름 중 하나만 제거된다는 점에 유의하십시오 _<width>x<height>.)

답변3

for file in *.png;
do
mv "$file" "`echo $file | sed 's/_200x200//'`"
done

관련 정보