我有几个 .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
...
我用来将 .ms 编译为 .pdf 的 groff 命令是:
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:语法错误:”)“意外”。