Bash 将时间戳与“比较”;“在线文件”;

Bash 将时间戳与“比较”;“在线文件”;,bash,comparison,timestamp,wget,Bash,Comparison,Timestamp,Wget,我做一些类似的事情 wget --user=userName --password=passWord --timestamping https://url.to/a/file.csv.gz gzip -cd file.csv.gz > file.csv (未测试) 请注意,服务器需要身份验证 仅当文件比本地文件更新时,才会下载该文件。这很好 但是,只有当远程文件比本地文件新时,才应执行第2行 我该怎么做呢?只需测试文件.csv.gz的修改时间是否比文件.csv更新 在Linux上: i

我做一些类似的事情

wget --user=userName --password=passWord  --timestamping https://url.to/a/file.csv.gz
gzip -cd file.csv.gz > file.csv
(未测试)

请注意,服务器需要身份验证

仅当文件比本地文件更新时,才会下载该文件。这很好

但是,只有当远程文件比本地文件新时,才应执行第2行


我该怎么做呢?

只需测试
文件.csv.gz
的修改时间是否比
文件.csv
更新

在Linux上:

if [ $(stat -c '%Y' file.csv.gz) -gt $(stat -c '%Y' file.csv) ]; then
    gzip -cd file.csv.gz > file.csv
fi
在BSD上(如Mac OS X):


其他系统可能对
stat
有不同的参数;检查您系统上的
man stat
,或者
help stat
如果它是shell内置的。

只需测试
文件.csv.gz
的修改时间是否比
文件.csv
更新

在Linux上:

if [ $(stat -c '%Y' file.csv.gz) -gt $(stat -c '%Y' file.csv) ]; then
    gzip -cd file.csv.gz > file.csv
fi
在BSD上(如Mac OS X):


其他系统可能对
stat
有不同的参数;在你的系统上检查
man stat
,或者
help stat
如果它是shell内置的。

刚刚尝试过。。。我收到一条错误消息,如
stat:can't read file system information
(很抱歉,我的计算机上没有英文)@speendo很抱歉,
stat
的参数在Linux和BSD上是不同的(例如我在Mac OS X上阅读文档)。我编辑了我的答案,将两个版本都包括在内;有关详细信息,请检查
stat
的参数。特别是,您需要一个格式字符串,该字符串以秒为单位提供自纪元以来的修改日期。刚刚尝试过。。。我收到一条错误消息,如
stat:can't read file system information
(很抱歉,我的计算机上没有英文)@speendo很抱歉,
stat
的参数在Linux和BSD上是不同的(例如我在Mac OS X上阅读文档)。我编辑了我的答案,将两个版本都包括在内;有关详细信息,请检查
stat
的参数。特别是,您需要一个格式字符串,该字符串以秒为单位给出自历元以来的修改日期。