Вы всегда можете сделать это с помощью скрипта:
exiftool -q -r -ext jpg -if '
$ImageWidth > 1000 ||
$ImageHeight > 1000 and
!print "$Directory/$Filename\0"'. |
xargs -r0 sh -c '
for file do
mv -i "$file" "$file.back" &&
convert -resize "1000x1000>" "$file.back" "$file" &&
touch -r "$file.back" "$file"
done' sh
Здесь изменяется размер изображений, чтобы они помещались в ограничивающую рамку размером 1000x1000.
exiftool
используется для поиска изображений, размер которых необходимо изменить convert
изменяет их размер (не затрагивает информацию exif)touch -r
восстанавливает исходную метку времени из файла резервной копии Вы используете:
consumer <(feeder)
Для вывода из feeder
для подачи на consumer
, когда consumer
не может получить ввод со стандартного ввода (, и в этом случае вы просто используете feeder | cousumer
), но только из имен файлов, заданных в качестве аргумента.
В этом случае вывод feeder
является концом записи канала, а расширением <(feeder)
является имя файла (, обычно /dev/fd/<x>
, хотя может быть именованным каналом в системах, которые не поддержка /dev/fd/<n>
), которая после открытия (с помощьюconsumer
)приводит вас к чтению конца этой трубы.
Симметрично, вы используете:
feeder >(consumer)
Для тех feeder
команд, которые не отправляют свой вывод на стандартный вывод (, где вы можете просто выполнить feeder | consumer
еще раз ), но в файл, имя которого нужно передать в качестве аргумента.
Затем consumer
ввод является концом канала для чтения, а >(consumer)
расширяется до имени файла, который после открытия (с помощьюfeeder
)приводит вас к концу записи этого канала. трубка.
Чаще используется <(...)
, потому что это полезно в командах, которые принимают более одного ввода, например:
diff -u <(cmd1) <(cmd2)
В то время как команды реже выводят более одного вывода или команды не могут отправить свой вывод на стандартный вывод. Распространенным исключением является:
feeder | tee >(consumer1) >(consumer2) | consumer3
Где tee
— типичная команда, которая параллельно отправляет некоторые выходные данные в несколько файлов (в дополнение к стандартному выводу ).
Возможно, вы видели такие вещи, как:
tar cf - somedir |
gzip -9 |
tee >(shasum > dir.tgz.shasum) >(md5sum > dir.tgz.md5sum) > dir.tgz
Для отправки выводаgzip
(сюда сжатого tar-архива )в выходной файл, а также shasum
и md5sum
для одновременного создания и сохранения контрольных сумм.