현재 디렉토리에서 for 루프를 수행하는 다음 bash 스크립트가 있습니다.
for filename in *-example99.jpg
do
width=$(identify -format "%w" "$filename")
myVar="newName$width"
new=$(echo $filename | sed -e 's/\.jpg$/"$myVar".jpg/')
echo "$filename" "$new"
mv "$filename" "$new"
done
실제로 파일 이름을 다음과 같이 바꾸고 싶습니다.
myfilename-example99.jpg
도착하다:
myfilename-newName.jpg
이 목표를 어떻게 달성할 수 있나요?
답변1
sed를 호출할 필요가 없습니다. bash 매개변수 대체를 통해 이 작업을 처리할 수 있습니다. 이 시도:
suffix="-example99.jpg"
for filename in *"$suffix" # wildcard * must remain unquoted
do
width=$(identify -format "%w" "$filename")
new="${filename%$suffix}-newName${width}.jpg"
echo mv "$filename" "$new"
done
${filename%$suffix}
문자열 끝에서 접미사를 제거합니다. 바라보다https://www.gnu.org/software/bash/manual/bash.html#Shell-Parameter-Expansion
답변2
간단하게prename
(진주 rename
):
myVar="newName"
prename 's/-[^-.]+(\.jpg)$/-'"$myVar"'$1/' *-example99.jpg