bash 批量调整图片大小

bash batch image resize

如何更改此字符串:

find . -type f -name "*.jpg" | while read i; do convert "$i" -resize 50% "${i%%.jpg*}_tn.jpg"; done

制作 tn_FILENAME.jpg 个文件,而不是 FILENAME_tn.jpg

谢谢!

find . -type f -name "*.jpg" | while read i; do [[ "${i##*/}" =~ ^tn_ ]] || convert "$i" -resize 50% "${i%/*}/tn_${i##*/}"; done

你的意思是这样?

${i%/*} 是删除了最后一个破折号之后的所有内容的文件名(因此文件所在的目录)。

/tn_ 将 tn_ 前缀添加到文件中,并且

${i##*/} 删除文件中最后一个破折号之前的所有内容(所以它是文件名)。

将这三个粘贴在一起即可得到结果。