如何確定 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

相關內容