У меня есть несколько документов .ms, разбросанных по разным папкам, и я хотел бы сделать скрипт, который компилирует каждый документ .ms и выводит соответствующий файл .pdf в определенную папку.
Структура папок следующая:
/home/user/foo/folder1/file1.ms
/home/user/foo/folder2/file2.ms
/home/user/foo/folder3/file3.ms
...
Вот что я сделал до сих пор:
#!/bin/bash
folder="/home/user/foo/"
file=$(du -a "$folder" | grep ".ms" | cut -f2- | sort)
Однако я не знаю, как сделать цикл, который будет превращать каждую строку вывода в соответствующий файл .pdf, например:
/home/user/foo/bar/file1.pdf
/home/user/foo/bar/file2.pdf
/home/user/foo/bar/file3.pdf
...
Команда groff, которую я использую для компиляции .ms в .pdf:
groff -k -T pdf -ms file.ms > file.pdf
РЕДАКТИРОВАТЬ
Благодаря ответу @dash-o я обновил свой скрипт следующим образом:
#!/bin/bash
input="/home/user/foo/"
output="/home/user/foo/bar"
find $input -name '*.ms' -execdir sh -c 'groff -k -T pdf -ms {} > $output$(basename {} .ms).pdf' \;
Однако это компилирует только первый документ и помещает его не в выходной каталог, а в тот же каталог, что и файл .ms, и я получаю 1: Синтаксическая ошибка:) неожиданно.