Как найти + преобразовать эти .gif?

Скрипт:

#!/bin/sh
IFS=" " # join arguments with a space character
echo "$* = $(( $* ))"

С + это просто:

./calc.sh 10 + 2
10 + 2 = 12

Но звездочка должна быть экранирована

./calc.sh 10 \* 2
10 * 2 = 20

или

./calc.sh 10 "*" 2
10 * 2 = 20
2
10.06.2017, 00:48
2 ответа

Отличный ответ Steeldriver в комментарии

 find -L. -name '*.gif' -execdir sh -c 'for f; 
      do convert -coalesce "$f" "${f%.gif}%05d.png"; 
 done' sh {} +
1
27.01.2020, 22:03

С зш

autoload -U zmv # best in ~/.zshrc

splitgif() convert -coalesce "$@"
zmv -p splitgif './(***/)(*).gif(#q-.)' './${1//\%/%%}${2//\%/%%}%05d.png'

Обратите внимание на необходимость ./, чтобы избежать проблем с файлами с именами gif:whatever.gif, например, и ${1//\%/%%}, чтобы экранировать символы %, которые могут быть найдены в путях к файлам.

  • ***совпадает с **, но следует символическим ссылкам при спуске по дереву каталогов, как ваш-L
  • (#q...)квалификатор глоба
  • -:примените следующие проверки к цели символической ссылки для символических ссылок(stat()вместо lstat()), как с вашим -L.
  • .:только обычные файлы (эквивалент-type f)
2
27.01.2020, 22:03

Теги

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