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

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

这只是mv srcdir/* targetdir/

如果在srcdir有太多的文件,你可能想尝试类似于下面的方法:

 cd srcdir find -exec mv {} targetdir/ + 

与“相反” \; 最后+以类似xargs方式收集参数,而不是每个文件执行一次mv

对于移动和覆盖文件,它看起来不像是-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/

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

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

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

把选项像mv -viu一样绑在一起

例如,也可以使用rsync

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

哪里:

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

如果您拥有root权限,则使用sudo前缀来覆盖潜在的权限问题。

在Linux shell中,许多命令接受多个参数,因此可以使用通配符。 所以,例如,如果你想将文件夹A中的所有文件移动到文件夹B中,你可以这样写:

 mv A/* B 

如果你想将所有文件移动到某个“外观”,你可以这样做:

 mv A/*.txt B 

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

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

 mv A/file_??.ext B 

或者更复杂的例子:

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

对于看起来像fi <-something – > _ < – 两个字符 – >。e <-something->的文件

与shell中许多需要-R(例如)复制或删除子文件夹的命令不同,mv本身就是这样做的。

请记住,mv覆盖没有问(除非被覆盖的文件是只读的,或者你没有权限),所以确保你不会在这个过程中失去任何东西。

为了您将来的信息,如果您有要复制的子文件夹,可以使用-R选项,并说要递归执行该命令。 所以它看起来像这样:

 cp A/* B -R 

顺便说一下,我所说的所有工作都与rm(删除,删除)和cp(复制)一起,并且要小心,因为一旦删除,就没有回头路了! 避免像rm * -R这样的命令,除非你确定你在做什么。