Bash脚本 - 确定文件是否已修改?

Ala*_* H. 9 macos bash

我有一个Bash脚本,每5秒重复复制一次文件.但这是一种触觉矫枉过正,因为通常没有变化.

我知道Linux命令,watch但因为这个脚本将用于OS X计算机(没有watch,我不想让每个人都安装macports)我需要能够检查文件是否被修改使用直接Bash代码.

我应该检查文件修改时间吗?我怎样才能做到这一点?

编辑:我希望扩展我的脚本,而不仅仅是复制文件,如果它检测到更改.那么有一种纯粹的bash方式吗?

Gle*_*ter 13

rsync如果您要管理大量文件树,我倾向于同意答案,但只有当源比目标更新时,您才可以使用-u(--update)标志来复制文件.

中央处理器

编辑

由于您已更新问题以表明您想要执行其他操作,因此您需要使用()内置命令中的-nt检查:[test

#!/bin/bash

if [ $1 -nt $2 ]; then
  echo "File 1 is newer than file 2"
else
  echo "File 1 is older than file 2"
fi
Run Code Online (Sandbox Code Playgroud)

从手册页:

file1 -nt file2
         True if file1 is newer (according  to  modification  date)  than
         file2, or if file1 exists and file2 does not.
Run Code Online (Sandbox Code Playgroud)

希望有所帮助.


Pau*_*ce. 6

OS X有stat命令.这样的东西应该给你一个文件的修改时间:

stat -f '%m' filename
Run Code Online (Sandbox Code Playgroud)

GNU等价物将是:

stat --printf '%Y\n' filename
Run Code Online (Sandbox Code Playgroud)