Как изменить размер изображений в последовательных функциях?

Проверьте, является ли nginx единственной программой, прослушивающей порт 80. Например, если у вас запущен apache2, это возможно, поскольку оба сервера прослушивают один и тот же порт, и возникает путаница. Вот полезная ссылкаhttps://www.cyberciti.biz/faq/find-linux-what-running-on-port-80-command/Также, в зависимости от браузера, который вы используете при написании url, немного поиграйтесь с url, укажите порт :192.168.1.5 :80 или попробуйте с доменом сервера.

0
23.04.2020, 01:11
2 ответа

Скажите, поможет ли это вам, если я вас правильно понял:

find. -name "*.jpeg" -o -name "*.jpg" -exec bash -c 'convert -resize 40% "{}" "{}"_resized.jpg' \;
0
19.03.2021, 02:26

Основная проблема с вашей второй командой заключается в том, что findне понимает расшифровку фигурных скобок {jpeg,jpg}, поэтому будет рассматривать ее как литеральную строку. Вторая проблема заключается в том, что, используя форму аргумента {} +, вы пытаетесь передать несколько файлов одному вызову convert.

Примечание. :удалите echoтолько после того, как вы убедитесь, что команды (и )ниже работают правильно.

Вероятно, вы хотите что-то вроде:

find. \( -name '*.jpeg' -o -name '*.jpg' \) -exec sh -c '
  for f; do 
    ext="${f##*.}"; echo convert -resize 40% "$f" "${f%.*}_resized.$ext"
  done
' find-sh {} +

Круглые скобки \(... \)необходимы, потому что -execсвязывает сильнее, чем -o. Без них файлы, соответствующие -name '*.jpeg', будут найдены, но не преобразованы.

Если вы не так требовательны к имени выходного файла, вы можете упростить приведенное выше до

find. \( -name '*.jpeg' -o -name '*.jpg' \) -exec sh -c '
  for f; do 
    echo convert -resize 40% "$f" "${f%.*}_resized.jpg"
  done
' find-sh {} +

(, который будет создавать выходные файлы с расширением .jpg, даже если исходный файл имел.jpeg)или даже

find. \( -name '*.jpeg' -o -name '*.jpg' \) -exec sh -c '
  for f; do 
    echo convert -resize 40% "$f" "${f}_resized.jpg"
  done
' find-sh {} +

(, который создаст выходные файлы, такие как foo.jpeg_resized.jpg).

Если вам не важна эффективность, вы можете сделать один вызов оболочки для каждого найденного файла и избавиться от цикла оболочки:

find. \( -name '*.jpeg' -o -name '*.jpg' \) -exec sh -c '
  echo convert -resize 40% "$1" "${1}_resized.jpg"
' find-sh {} \;

Обратите внимание, что в вашей третьей команде

find ./*.{jpeg,jpg} -exec jpegoptim   -m 35%  --size=35% {} \;

ваша оболочка , скорее всего, расширит {jpeg,jpg}без кавычек, но это тоже не то, что вам нужно -, опять же, это должно быть

find. \( -name '*.jpeg' -o '*.jpg' \) -exec jpegoptim   -m 35%  --size=35% {} \;
0
19.03.2021, 02:26

Теги

Похожие вопросы