我知道将文件从一个地方移动到另一个地方的mv
命令,但是如何将所有文件从一个目录移动到另一个目录(包含其他一些文件),如果文件已经覆盖则覆盖存在?
答案 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/
如果您想查看正在执行的操作,请使用-v
:mv -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