Как конвертировать файлы в другой формат и переместить их в другую директорию параллельно и рекурсивно.

find $(pwd) -type f -not -path '*/\.*' -iname '*.tif' -print0| xargs -0 -n1 -P4 -I{} bash -c 'X="{}"; Y=${X##*/}; convert "$X" -resize 1920x1080 -density 72" newpath/${Y%.*}.jpg"'


Команда «find» используется для поиска файлов и директорий в указанном расположении. В этом случае, команда ищет все файлы с расширением «.tif» в текущей директории и ее поддиректориях, исключая скрытые файлы.

Опция «-print0» позволяет выводить результаты поиска в формате, который будет корректно обрабатываться командой «xargs».

«Xargs» служит для передачи найденных файлов команде «bash» для дальнейшей обработки. Опция «-0» указывает, что результаты поиска, переданные с помощью «find», должны быть разделены символом нулевого значения, чтобы корректно обработать файлы с пробелами или специальными символами в их именах.

Опция «-n1» указывает на то, что «xargs» должен обрабатывать каждый файл отдельно, один за одним.

Опция «-p4» используется для выполнения команды «convert» в 4 параллельных процесса для ускорения процесса конвертации файлов.

В команде «bash -c», «{x}» представляет собой имя найденного файла, а «{y}» является именем файла без расширения.

Команда «convert» изображение из формата «.tif» конвертирует в формат «.jpg» с новым размером 1920×1080 и плотностью 72 точки на дюйм.

Найденные и преобразованные файлы сохраняются в новой директории «newpath» с тем же именем файла, но измененным расширением на «.jpg».

Альтернатива этому можно использовать программируемый язык, такой как Python или Perl, для создания собственного сценария по обработке файлов. Однако, использование командной строки может быть более простым и быстрым решением в данном случае.

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *