![循环遍历文件扩展名注释添加 EXIF 重命名和复制](https://linux22.com/image/1197386/%E5%BE%AA%E7%8E%AF%E9%81%8D%E5%8E%86%E6%96%87%E4%BB%B6%E6%89%A9%E5%B1%95%E5%90%8D%E6%B3%A8%E9%87%8A%E6%B7%BB%E5%8A%A0%20EXIF%20%E9%87%8D%E5%91%BD%E5%90%8D%E5%92%8C%E5%A4%8D%E5%88%B6.png)
该脚本从条目中读取用户输入,就像filename.jpg
在当前目录中创建目录一样。然后重命名文件并添加文件的 EXIF 数据,然后将原始文件复制到刚刚创建的目录中。
使用 imagemagick 进行转换
我正在尝试找出一个循环,遍历包含 100 个文件(按文件扩展名排序,如 (.*jpg、*png、*jpeg)),自动重命名,添加 EXIF 数据,如果不存在则创建新目录(目录内),将原始文件复制到新目录。除了扩展名外,实际上不需要用户输入。对于这些特定的扩展名。
#!/bin/bash
ls -XI "*.sh" |sort -g -r
echo
echo "Enter Image name with file extension"
read MGNM
newdir=${PWD##*/}
LBLNM=`identify -format "%[EXIF:DateTime]" $MGNM`
echo "${LBLNM[@]}"
mkdir -vp $newdir
convert $MGNM -background Khaki -pointsize 100 label:"$LBLNM" -gravity Center -append ADDEDPREFIX-$MGNM
mv -v $MGNM $newdir/
echo
ls -XI "*.sh" |sort -g -r
echo
ls -XI "*.sh" $newdir/|sort -g -r
可能添加调整大小,在添加 exif 数据后,然后将原始数据复制到工作目录内的某个目录?
mogrify -path $newdir/ -resize 50% -quality 80 *.JPG
答案1
如果这对你来说已经有效,而你想要的只是自动化它,那么最有可能的是你需要将它全部放入一个 shell 循环中......这里有一个例子:
for f in {*.jpg,*.jpeg,*.png}; do
newdir="${PWD##*/}"
LBLNM=$(identify -format "%[EXIF:DateTime]" "$f")
mkdir -vp "$newdir"
convert "$f" -background Khaki -pointsize 100 label:"$LBLNM" -gravity Center -append ADDEDPREFIX-"$f"
mv -v "$f" "$newdir"/
mogrify -path "$newdir"/ -resize 50% -quality 80 "$f"
done
...它将使用 glob 模式循环遍历当前工作目录中的所有文件*.jpg
,*.jpeg
并*.png
根据您的意愿对它们执行操作。