나는 각각 많은 수의 이미지를 포함하는 많은 하위 폴더가 있는 큰 디렉터리 트리를 가지고 있습니다. 디렉토리의 모든 이미지에 워터마크를 적용하여 원본 이미지를 덮어쓰는 스크립트를 찾았습니다. 저는 모든 폴더와 하위 폴더를 반복하고 Linux 서버의 각 이미지에 대해 "작성" 명령을 실행하는 가장 좋은 방법을 찾고 있습니다. 내가 찾은 원본 스크립트는 다음과 같습니다.
#!/bin/bash
###########################################
# NAME: wn-ow
# AUTHOR: Linerd (http://tuxtweaks.com), Copyright 2009
# LICENSE: Creative Commons Attribution - Share Alike 3.0 http://creativecommons.org/licenses/by-sa/3.0/
# You are free to use and/or modify this script. If you choose to distribute this script, with or
# without changes, you must attribute credit to the author listed above.
# REQUIRES: ImageMagick, coreutils
# VERSION: 1.0
# DESCRIPTION: A script to add a watermark and overwrite all images in a directory.
#
# This script will watermark all of the images in a directory. Warning! This will overwrite the files.
###########################################
# Initialize variables
WM=$HOME/public_html/image/catalog/logo-website/watermark.png # This is the path to your watermark image
SCALE=100 # This sets the scale % of your watermark image
# Warning
echo -e "This will overwrite all of the images in this directory."\\n"Are you shure want to continue? {Y/n}"
read REPLY
if
[ "$REPLY" != "n" ] && [ "$REPLY" != "N" ]
then
file -i * | grep image | awk -F':' '{ print $1 }' | while read IMAGE
do
echo Watermarking $IMAGE
composite -dissolve 40% -gravity SouthEast -quality 100 \( $WM -resize $SCALE% \) "$IMAGE" "$IMAGE"
done
else
echo exiting
exit 0
fi
exit 0
"find . -name *.jpg" 또는 다른 조합을 사용해야 합니까?
답변1
스크립트는 이미 이미지 파일의 디렉터리를 확인하지만 각 디렉터리에 대해 메시지를 표시하지 않고 모든 디렉터리를 반복하도록 조정하려면 이를 재정의할 수도 있습니다. 그것은 다음과 같습니다:
#!/bin/bash
WM=$HOME/public_html/image/catalog/logo-website/watermark.png # This is the path to your watermark image
SCALE=100 # This sets the scale % of your watermark image
STARTDIR="/home/whatever/images" # This is the directory to start in
for imagedir in $( find $STARTDIR -type d )
do
echo "Running in $imagedir ..."
cd $imagedir
file -i * | grep image | awk -F':' '{ print $1 }' | while read IMAGE
do
echo "Watermarking $IMAGE"
composite -dissolve 40% -gravity SouthEast -quality 100 \( $WM -resize $SCALE% \) "$IMAGE" "$IMAGE"
done
done