以下為範例
#!/bin/bash
convertwebp() {
filename="$1"
extension="${filename##*.}"
case "$extension" in
jpg) cwebp -q 85 "$filename" -o "$filename.webp"
echo "$filename.webp" >> /var/log/result.log
;;
gif) gif2webp -q 85 "$filename" -o "$filename.webp"
echo "$filename.webp" >> /var/log/result.log
;;
png) cwebp -q 85 "$filename" -o "$filename.webp"
echo "$filename.webp" >> /var/result.log
;;
esac
}
export -f convertwebp
imagedir="images"
startdate=$(date -d yesterday "+%Y-%m-%d")
enddate=$(date -d today "+%Y-%m-%d")
if [ -d "/mnt/localstorage/$imagedir" ]; then
find /mnt/localstorage/$imagedir -type f -newermt $startdate ! -newermt $enddate > /var/log/convert.log
fi
if [ -f "/var/log/convert.log" ]; then
parallel convertwebp :::: /var/log/convert.log
fi
if [ -f "/var/log/result.log" ]; then
cat /var/log/result.log | gsutil -m -h "Content-Type:image/webp" cp -I gs://googlecloudstorage/$imagedir/
fi
rm /var/log/convert.log
rm /var/log/result.log
echo -e -n "Done!\n"
convertwebp()
函數用於處理圖片轉換為 WebP 格式, 依照副檔名使用不同的轉換程式(cwebp或gif2webp)find /mnt/localstorage/$imagedir -type f -newermt $startdate ! -newermt $enddate > /var/log/convert.log
尋找我要的時間區間內的檔案, 符合的檔名匯出到 /var/log/convert.log 檔案parallel convertwebp :::: /var/log/convert.log
用 parallel 讀取 /var/log/convert.log, 將裡面搜集的檔案名稱用 convertwebp 函數來處理cat /var/log/result.log | gsutil -m -h "Content-Type:image/webp" cp -I gs://googlecloudstorage/$imagedir/
完成轉換的檔案, 把它存到 Google Cloud Storage 的 Bucket: googlecloudstorage
, 並位於 $imagedir
變數所設定的目錄