用于将.TIF转换为.PDF的shellscript

用于将.TIF转换为.PDF的shellscript,shell,unix,pdf,tiff,Shell,Unix,Pdf,Tiff,我想通过一个目录的子目录进行转换,或者将.TIF图像转换成pdf格式。我的目录结构如下: folder item_one file1.TIF file2.TIF ... fileN.TIF item_two file1.TIF file2.TIF ... ... 我正在使用Mac电脑,并考虑使用sips将.TIF文件更改为.PNG文件,然后使用pdfjoin将所有.PNG文件合并

我想通过一个目录的子目录进行转换,或者将.TIF图像转换成pdf格式。我的目录结构如下:

folder
   item_one
       file1.TIF
       file2.TIF
       ...
       fileN.TIF
   item_two
       file1.TIF
       file2.TIF
       ...
   ...
我正在使用Mac电脑,并考虑使用sips将.TIF文件更改为.PNG文件,然后使用pdfjoin将所有.PNG文件合并到每个文件夹的一个.PDF文件中

我使用了:

for filename in *; do sips -s format png $filename --out $filename.png; done
但这只适用于单个目录中的.TIF文件。如何编写一个shellscript来遍历一系列目录呢

创建.PNG文件后,我会做基本相同的事情,但使用:

pdfjoin --a4paper --fitpaper false --rotateoversize false *.png

这是一种有效的方法吗?有没有更好、更有效的方法来执行这样的操作?或者我是个白痴,应该用一些软件来做这件事,比如ImageMagick什么的?

尝试使用
find
命令和
exec
开关来调用图像转换解决方案。或者,不使用
exec
开关,您可以通过管道将
find
的输出传输到
xargs
。网上有很多关于使用
find
的信息。这是StackOverflow的一个

至于图像转换,我认为这取决于你对速度和效率的要求。如果您已经验证了所描述的流程,并且这是一个一次性流程,并且只需要几秒钟或几分钟就可以运行,那么您可能就没事了。另一方面,如果您需要经常这样做,那么花时间寻找一个一步转换解决方案可能是值得的,它比您当前的两步转换解决方案花费的时间更少


请注意,您可以通过管道将
sips
的输出传送到
pdfjoin
,而不是两次传送;但是,这需要进行一些调查来验证。

谢谢!这真的很有帮助!