如何将所有文件从一个目录移动(并覆盖)到另一个目录?

Chr*_*ris 21 unix linux

我知道mv将文件从一个地方移动到另一个地方的命令,但是如何将所有文件从一个目录移动到另一个目录(包含一堆其他文件),如果该文件已存在则覆盖?

ken*_*orb 16

也可以通过使用rsync,例如:

rsync -va --delete-after src/ dst/
Run Code Online (Sandbox Code Playgroud)

在哪里:

  • -v, --verbose: 增加冗长
  • -a, --archive: 存档模式;等于-rlptgoD(否-H,-A,-X
  • --delete-after: 在传输完成后删除接收方的文件

如果您拥有 root 权限,请添加前缀sudo以覆盖潜在的权限问题。

  • 删除了我的所有数据...即使在目的地 (4认同)

mus*_*iKk 14

这只是mv srcdir/* targetdir/.

如果文件太多,srcdir您可能想尝试以下方法:

cd srcdir
find -exec mv {} targetdir/ +
Run Code Online (Sandbox Code Playgroud)

\;final 相反+,以xargs类似的方式收集参数,而不是mv为每个文件执行一次.

  • 只需注意:在包含数千个文件的目录上,您将无法使用*,因为参数列表对于shell来说太长了,所以您需要使用"find"代替或类似的解决方案 (4认同)
  • @musiKk感谢您的提示.虽然我的评论是一个问题,但它在这里是因为我觉得答案是99%的帮助,但错过了1%,这将使其完美. (3认同)

Dav*_*rks 10

mv -f source target
Run Code Online (Sandbox Code Playgroud)

从手册页:

-f, --force
          do not prompt before overwriting
Run Code Online (Sandbox Code Playgroud)

  • `mv -f /a/b /c/d` 将 `b` 移动到 `d` 内(所以我有 `/c/d/a`),而不是用 `a` 覆盖 `d`(我想要 `/c` /a`)。我怎样才能做到这样的覆盖? (4认同)

iSk*_*ore 5

对于移动和覆盖文件,似乎没有该-R选项(如果有疑问,请通过键入检查您的选项[your_cmd] --help。此外,此答案取决于您如何移动文件。移动所有文件,文件和目录,替换文件在目的地等

键入时,mv --help将返回所有选项的描述。

对于mv,语法为 mv [option] [file_source] [file_destination]

要移动简单文件: mv image.jpg folder/image.jpg

将文件夹移到目标位置 mv folder home/folder

要将源中的所有文件移动到目标 mv folder/* home/folder/

-v如果要查看正在执行的操作,请使用:mv -v

用于-i在覆盖前提示:mv -i

使用-u以更新文件的目的地。它只会移动比目标文件新的源文件,并且尚不存在时:mv -u

将选项捆绑在一起,例如mv -viu,等等。