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

时间:2011-08-25 13:12:35

标签: linux unix

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

6 个答案:

答案 0 :(得分:12)

只是mv srcdir/* targetdir/

如果srcdir中的文件太多,您可能需要尝试以下方法:

cd srcdir
find -exec mv {} targetdir/ +

\;相比,最终+xargs方式收集参数,而不是为每个文件执行一次mv

答案 1 :(得分:4)

对于移动和覆盖文件,它看起来不像-R选项(如果有疑问,请输入[your_cmd] --help检查您的选项。此外,这个答案取决于您想要如何移动你的文件。移动所有文件,文件和目录,替换目的地的文件等。

当您输入mv --help时,它会返回所有选项的说明。

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

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

将文件夹移至目的地mv folder home/folder

将源中的所有文件移至distination mv folder/* home/folder/

如果您想查看正在执行的操作,请使用-vmv -v

在覆盖之前使用-i进行提示:mv -i

使用-u更新目的地中的文件。它只会移动比目标文件更新的源文件,当它还不存在时:mv -u

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

答案 2 :(得分:3)

mv -f source target

从手册页:

-f, --force
          do not prompt before overwriting

答案 3 :(得分:2)

使用rsync也可以,例如:

rsync -va --delete-after src/ dst/

其中:

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

如果您拥有root权限,请使用sudo作为前缀,以覆盖潜在的权限问题。

答案 4 :(得分:0)

在linux shell中,许多命令接受多个参数,因此可以与通配符一起使用。因此,例如,如果要将所有文件从文件夹A移动到文件夹B,请编写:

mv A/* B

如果你想移动所有带有“look”的文件,你可以这样做:

mv A/*.txt B

将blablabla.txt的所有文件复制到文件夹B

星(*)可以替换任意数量的字符或字母吗?可以替代一个。例如,如果文件file_number.ext中有许多文件,并且您只想移动具有两位数字的文件,则可以使用如下命令:

mv A/file_??.ext B

或更复杂的例子:

mv A/fi*_??.e* B

对于看起来像fi< -something-> _< -two characters-> .e< -something->

的文件

与shell中需要-R(例如)复制或删除子文件夹的许多命令不同,mv会自行完成。

请记住,mv会在没有询问的情况下覆盖(除非被覆盖的文件是只读的,或者你没有权限),所以请确保在此过程中不会丢失任何内容。

对于您将来的信息,如果您有要复制的子文件夹,则可以使用-R选项,表示您希望以递归方式执行该命令。所以它看起来像这样:

cp A/* B -R

顺便说一下,我所说的一切都与rm(删除,删除)和cp(复制)一起工作并且要小心,因为一旦删除,就没有回头了!除非您确定自己在做什么,否则请避免使用rm * -R之类的命令。

答案 5 :(得分:0)

如果您只需要对所有覆盖提示回答“ y”,请尝试以下操作:


$umount -f /Volumnes/fullpath/folder