Нужно конвертировать каталог с подкаталогами с изображениями в webp - PullRequest
0 голосов
/ 18 января 2019

Я пытаюсь сделать мой сайт быстрее и обнаружил, что преобразование jpg и png в webp может иметь значение, поэтому я хочу скопировать все изображения в каталоге моей темы, включая изображения в подкаталогах в другую папку, но сохранить исходный поток каталогов ,

После поиска в Google я нашел скрипт на этом сайте, и он работает, и я создал каталог в новой стартовой папке, используя mkdir. Но моя проблема в том, что я должен вручную отредактировать скрипт и запустить его в каждой папке. Поскольку я не лучший в работе с bash, я понятия не имею, как отредактировать конвертирующий скрипт, чтобы просмотреть все папки и скопировать их в новую.

Итак, мой вопрос, есть ли способ сохранить структуру папок как исходную, но с другой базовой папкой?

for file in *.jpg
do
    cwebp -q 100 "$file" -o "/var/www/themes/assets/images/webp/${file%.jpg}.webp"
done

1 Ответ

0 голосов
/ 19 января 2019

Попробуйте этот ( Shellcheck -чистый) код:

#! /bin/bash

shopt -s nullglob       # Globs that match nothing expand to nothing
shopt -s globstar       # ** matches multiple directory levels

root_webp_dir=/var/www/themes/assets/images/webp

for jpg_path in **/*.jpg ; do
    jpg_file=${jpg_path##*/}
    [[ $jpg_path == */* ]] && jpg_dir=${jpg_path%/*} || jpg_dir=.

    webp_dir=${root_webp_dir}/${jpg_dir}
    webp_path=${webp_dir}/${jpg_file%.jpg}.webp

    [[ -d $webp_dir ]] || mkdir -p -- "$webp_dir"
    cwebp -q 100 "$jpg_path" -o "$webp_path"
done

Обратите внимание, что версия cwebp, которую я использовал для тестирования (тупо), не поддерживает соглашение -- для завершения параметров командной строки. В противном случае команда была бы (и должна быть) cwebp -q 100 -o "$webp_path" -- "$jpg_path". Команда в приведенном выше коде может пойти не так, если какой-либо из файлов JPEG имеет путь, начинающийся с -. Один из способов обойти проблему и сделать код полностью безопасным - использовать ./**/*.jpg вместо **/*.jpg в качестве шаблона для поиска файлов JPEG.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...