다음과 같은 폴더에 많은 파일이 있습니다.
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