仅当文件比目标新时才复制文件

Eli*_*Eli 52 linux cp

仅当被复制的文件比目标版本新时,如何在 Linux 中复制文件?

如果目标文件较新,我希望文件副本不要继续。

Den*_*nis 68

将更新选项 (-u) 与 cp 一起使用应该可以为您完成。

http://beginnerlinuxtutorial.com/help-tutorial/basic-linux-commands/cp-linux-copy-command/

  • 为了给未来的读者节省一些时间:这个问题被标记为 Linux。非 GNU cp 实现(BSD、macOS 等)缺少 `-u` 选项。您可以改用`rsync --update`。 (31认同)

小智 26

使用rsync

rsync --progress -r -u /from/one/* /to/another/directory
Run Code Online (Sandbox Code Playgroud)

  • 只是为了完整性:`-r` 表示递归操作到子目录,`-u` 表示将较新的文件保存在目的地(=更新)。`--progress` 显示操作过程中的进度信息。 (3认同)
  • 我强烈建议添加“-t”选项,以保留时间戳来自源 (3认同)
  • 我建议还添加 -p 以保持相同的 chmod 和 chown rsync --progress -rutp (3认同)

Kus*_*nda 8

您没有说您使用的是什么外壳,所以我将假设ksh

if [[ file1 -nt file2 ]]; then cp file1 file2; fi
Run Code Online (Sandbox Code Playgroud)


小智 5

yes|cp -ruv /from/* /to/.
是 - 对所有问题回答“是”。
r - 递归
u - 更新
v - 进度

与xargs类似。

我不知道如何从学术上解释。

如何强制cp覆盖而不确认