답변:
외부 명령을 호출 할 필요없이 bash를 사용하십시오.
for file in *_h.png
do
mv "$file" "${file/_h.png/_half.png}"
done
추가하지 마십시오 #!/bin/sh
그 한 줄짜리가 필요한 사람들을 위해 :
for file in *.png; do mv "$file" "${file/_h.png/_half.png}"; done
Do not add #!/bin/sh
있습니까? 나는이 진술을 사용하거나 사용하지 않고 두 가지 모두를 시도했습니다.
#!/bin/bash
. bash는 일반적으로 많은 컴퓨터에서 기본 셸이므로 많은 차이점을 찾을 수는 없습니다 .D 자세한 정보는 여기를
rename
명령을 시도하십시오 :
rename 's/_h.png/_half.png/' *.png
최신 정보:
사용법 예 :
내용을 만들다
$ mkdir /tmp/foo
$ cd /tmp/foo
$ touch one_h.png two_h.png three_h.png
$ ls
one_h.png three_h.png two_h.png
테스트 솔루션 :
$ rename 's/_h.png/_half.png/' *.png
$ ls
one_half.png three_half.png two_half.png
ls
무엇입니까? rename ...
당신 은 무엇 을 시도합니까?
rename
표준 유닉스 도구가 아닙니다.
brew install rename
's//'
나에 관해서 는 이름 바꾸기가 작동하지 않았다 -나는 man을 참조했고 간단한 시놉시스가 있었다 : rename [options] expression replacement file...
, CentOS 7, 버전 :rename from util-linux 2.23.2
.
점이 아닌 모든 문자와 일치하는 점 을 명심하십시오. 리터럴 점의 경우 \.
대신 사용하십시오
순수한 bash 솔루션을 찾고 있습니까? 많은 접근 방식이 있지만 여기에 있습니다.
for file in *_h.png ; do mv "$file" "${file%%_h.png}_half.png" ; done
이것은 현재 디렉토리에서 끝나는 파일 만 _h.png
이름을 바꾸려는 파일이라고 가정합니다 .
훨씬 더 구체적으로
for file in 0{5..6}_h.png ; do mv "$file" "${file/_h./_half.}" ; done
이 두 가지 예만 가정하면됩니다. 파일.
답변 세트 가 완료 되었지만 누락 된 다른 답변 을 추가해야합니다.
for i in *_h.png;
do name=`echo "$i" | cut -d'_' -f1`
echo "Executing of name $name"
mv "$i" "${name}_half.png"
done