如何确定 cp -u 是否实际复制了文件?

Sas*_*olf 5 cp timestamps

我正在寻找一种简洁的方法来检查文件是否使用cp -u.

我有一个小 shell 脚本,它更新了相当多的文件。目前,脚本echo为每个被复制的文件提供了一条小消息。

现在我想以这样一种方式更改脚本,即echo只有在文件实际更新时才执行。cp -u如果没有复制文件,我已经检查过是否返回了错误代码,但事实并非如此。

有没有比手动比较文件时间戳更好的方法?

Cyr*_*rus 8

if [ "$(cp -uv source destination)" != "" ]; then echo copied; else echo not copied; fi
Run Code Online (Sandbox Code Playgroud)

更新

匹配 cp 的详细输出中的“->”。仅当它可以成功复制并且您的文件名不包含“->”时才会发生。

if [[ "$(cp -uv source destination)" =~ \-\> ]]; then echo copied; else echo not copied; fi
Run Code Online (Sandbox Code Playgroud)