Intereting Posts
Загрузка из копии структуры каталогов Linux Samba 4.5.12 в Debian 9 продолжает запрашивать аутентификацию в Windows 7 Не удается добавить пользователя, потому что группа уже существует? Не удается войти через диспетчер дисплея в Debian Jessie В чем разница между btrfs raid1 и btrfs -m dup -d dup на одном устройстве Создание новой виртуальной машины в VirtualBox, работающей на CentOS и Windows 10 Как установить отсутствующие модули ядра? Является ли это возможным? как я могу включить разделение рабочего стола mint прежде, чем кто-нибудь войдет в систему? Systemd и процесс нереста KVM с каталогом rootfs Правила IPTables для определенных процессов Звук не работает: что использует snd_hda_codec_conexant? Если вы хотите получить будущую дату, почему вы не можете просто получить текущую дату и использовать sed / awk / etc? EDID недействителен на устройстве USB DisplayLink Может ли меньше загружать строки, которые были добавлены в файл после открытия?

Выбор несуществующих файлов с подстановочным знаком / регулярным выражением

Я пытаюсь преобразовать сотни файлов *.jpg файлы *.webp с libwebp на macOS. В частности, я хочу использовать инструмент командной строки cwebp для выполнения преобразования. Он работает следующим образом:

 cwebp <input_file>.jpg -o <output_file>.webp 

Мои файлы *.jpg , имена которых IMG_20160227_110640.jpg или около того, хранятся в каталоге с именем root . Проблема в том, что файлы *.webp не существуют, когда выполняется преобразование, поэтому я не знаю, как передать их имена в cwebp . Например, если у меня есть только одно изображение для преобразования, я бы просто выполнил

 cwebp IMG_20160227_110640.jpg -o IMG_20160227_110640.webp 

Однако их сотни, и я не хочу вводить сотни строк команды. Как использовать регулярное выражение / написать сценарий для автоматизации преобразования?

Используйте цикл for сочетании с расширением параметра:

 for f in *.jpg; do cwebp "$f" -o "${f%.jpg}.webp"; done 

См. Также LESS='+/Parameter Expansion' man bash чтобы прочитать это для Bash.

Тем не менее, расширение параметра указано в POSIX ; это не относится к Башу. (Однако у Bash могут быть некоторые расширения). Команда выше будет работать в любой системе POSIX.