如何确定 cp -u 是否真正复制了文件?

如何确定 cp -u 是否真正复制了文件?

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

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

现在我想以这样的方式更改脚本,以便仅echo在文件实际更新时执行。我检查过如果cp -u不复制文件是否返回错误代码,但事实并非如此。

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

答案1

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

更新

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

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

相关内容