【发布时间】:2014-12-23 00:02:10
【问题描述】:
这是一个相当简单的问题,一直困扰着我。一点背景故事。我有一个装满脚本的文件夹。这些脚本获取数据文件*.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 脚本,只执行比类似的
*.eps更新的*.plt文件?
我知道我可以在 Python 中做到这一点。但这似乎是作弊。我也知道我可以寻找更新的*.eps 并执行所有比这更新的*.plt。对于大多数实际情况,这将解决我的问题。我在输入问题时才意识到这个选项,所以谢谢 SX。但是,作为一个教学练习,为了解决我最初的疑问,我想搜索个别案例:比较每个 *.plt 与每个 *.eps 的修改时间,并且仅在它们比输出。可能吗?可以一行完成吗?
编辑:我忘了补充,*.plt 脚本也应该在没有同音字 *.eps 文件时执行,这通常意味着该脚本是新的并且尚未执行。
【问题讨论】:
标签: shell find file-comparison