这是一个相当简单的问题,一直困扰着我。一点背景故事。我有一个装满脚本的文件夹。这些脚本获取数据文件*.dat
并以*.eps
. 我的脚本的扩展名是*.plt
. *.plt
我创建了一个运行该文件夹中所有文件的单行 shell 脚本。
#!/bin/sh
find . -name "*.plt" -exec {} \;
我只是想确保*.pdf
我将在文档中使用的所有图像都是最新的。一时间,单行脚本还不错。但是当文件数量超过50个时,运行起来需要一些时间。我很少更改数据文件,但经常更改*.plt
脚本。脚本的编写方式使得名为的脚本this_script_does_something.plt
将创建一个名为this_script_does_something.eps
.
因此,这是我的问题。
- 有没有办法编写一个精炼的 shell 脚本,只执行
*.plt
比类似调用的文件更新的文件*.eps
?
我知道我可以在 Python 中做到这一点。但这似乎是作弊。我也知道我可以寻找更新的*.eps
并执行所有*.plt
比这更新的。对于大多数实际情况,这将解决我的问题。我在输入问题时才意识到这个选项,所以谢谢 SX。但是,作为一个教学练习,为了解决我最初的疑问,我想搜索个别案例:比较 each*.plt
与 each的修改时间*.eps
,并且仅在它们比输出更新时执行脚本。是否可以?它可以在一行中完成吗?
编辑:我忘了补充,*.plt
当没有同名*.eps
文件时,脚本也应该执行,这通常意味着脚本是新的并且尚未执行。