bash xargs и пробелы в именах )

Автор zCirill, 24 марта 2015, 13:00:29

« назад - далее »

0 Пользователи и 2 гостей просматривают эту тему.

zCirill

Добрый день.

Подскажите плз про xargs
Нужно прогнать все jpg файлы через оптимизатор изображений jpegtran
В путях к файлам есть пробелы )
Для пробелов -print0 и xargs -0 думаю мне в помощь. Но как дальше?

jpegtran требует имя файла на выход (либо отправляет на stdout) ... как ему передать аргумент из xargs второй раз?


Ищу по каталогам файлы



find /var/www -name *.jpg* -type f -print0 | xargs -0 -L 1 jpegtran -copy none -optimize -outfile .... а вот сюда надо как то передать путь к файлу из xargs




Leo

find /var/www -name "*.jpg*" -type f -print0 | while IFS= read -r -d $'\0' line; do cat $line | jpegtran -optimize -outfile $line; done

zCirill

Цитата: Leo от 24 марта 2015, 15:53:36
find /var/www -name "*.jpg*" -type f -print0 | while IFS= read -r -d $'\0' line; do cat $line | jpegtran -optimize -outfile $line; done

спасибо.

я правильно понял что IFS= read -r -d $'\0' это конструкция для того чтобы определить разделитель?

Leo

даже вот так
find /var/www -name "*.jpg*" -type f | while read i; do jpegtran -optimize -outfile "$i" "$i"; done