我正在寻找一种简洁的方法来检查文件是否是使用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