【发布时间】:2015-02-09 10:29:21
【问题描述】:
我正在寻找一个简单的 bash 解决方案,以便在像 wget --timestamp https://example.com/my.file 这样的命令之后更新文件时执行操作
我观察到 wget 在两种情况下都返回 0,当文件已经是最新版本时,并且当它确实下载了较新版本时。
在 bash 中实现此功能的最简单方法是什么?
【问题讨论】:
-
另存为不同的文件,然后比较它们,如果它们不同,则执行任何操作
-
@JID 我宁愿在运行 wget 并在执行后检查它之前将文件的日期时间保存在变量中。我不想无缘无故地向磁盘添加新文件。
-
我不会说这是没有充分理由的,因为它可以解决您的问题。根据文件的大小,它可能会在磁盘上停留不到几秒钟。您也可以使用
-qO-并将其生成的标准输出与原始标准输出进行比较。或者您可以按照您所说的将日期时间保存到变量中,尽管我不知道在这种情况下问题的重点是什么。 -
如果远程文件支持HTTP HEAD,请使用
curl -I https://example.com/my.file并将本地文件上的时间戳与远程文件的Last-Modified头值进行比较 -
您可以使用
inotifywait来检查文件更改。