我知道mv命令可以将文件从一个地方移动到另一个地方,但是如果文件已经存在,我如何将所有文件从一个目录移动到另一个目录(其中有一堆其他文件)?
mv
qacovj5a1#
mv -f source target
字符串从man page:
-f, --force do not prompt before overwriting
型
t8e9dugd2#
只有mv srcdir/* targetdir/。如果srcdir中的文件太多,您可能想尝试以下方法:
mv srcdir/* targetdir/
srcdir
cd srcdir find -exec mv {} targetdir/ +
字符串与\;相反,最终的+以类似xargs的方式收集参数,而不是对每个文件执行一次mv。
\;
+
xargs
uqjltbpv3#
也可以使用rsync,例如:
rsync
rsync -a src/ dst/
字符串其中:
-a
--archive
-rlptgoD
-H,-A,-X
您可以选择添加以下内容:
-v
--verbose
--delete-after
cp
dst/
delete
前缀为sudo以覆盖潜在的权限问题。在根文件系统中使用rsync时,请注意您正在做什么。
sudo
dl5txlt94#
对于移动和重定向文件,它看起来不像有-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等。
-R
[your_cmd] --help
mv --help
mv [option] [file_source] [file_destination]
mv image.jpg folder/image.jpg
mv folder home/folder
mv folder/* home/folder/
mv -v
-i
mv -i
-u
mv -u
mv -viu
aiqt4smr5#
在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->_<-two characters->.e的文件,<-something->不像shell中的许多命令需要-R来(例如)复制或删除JavaScript,mv自己完成。记住mv会自动覆盖(除非被覆盖的文件是只读的或者你没有权限),所以要确保你在这个过程中不会丢失任何东西。为了方便以后的学习,如果你有一个你想要复制的命令,你可以使用-R选项,表示你想要递归地执行这个命令。所以它看起来像这样:
cp A/* B -R
型顺便说一句,我所说的也适用于rm(删除,删除)和cp(复制),小心,因为一旦你删除,就没有回头路了!避免像rm * -R这样的命令,除非你确定你在做什么。
rm * -R
yx2lnoni6#
如果你只需要对所有的覆盖提示回答“y”,试试这个:
y | mv srcdir/* targetdir/
字符串
6条答案
按热度按时间qacovj5a1#
字符串
从man page:
型
t8e9dugd2#
只有
mv srcdir/* targetdir/
。如果
srcdir
中的文件太多,您可能想尝试以下方法:字符串
与
\;
相反,最终的+
以类似xargs
的方式收集参数,而不是对每个文件执行一次mv
。uqjltbpv3#
也可以使用
rsync
,例如:字符串
其中:
-a
,--archive
:存档模式;等于-rlptgoD
(无-H,-A,-X
)您可以选择添加以下内容:
-v
、--verbose
:增加详细程度--delete-after
:在传输完成后删除接收端的文件。这使其成为mv
而不是cp
,但要注意这将删除dst/
目录中的文件。有关不同delete
-选项的详细信息,请查看this question。前缀为
sudo
以覆盖潜在的权限问题。在根文件系统中使用rsync
时,请注意您正在做什么。dl5txlt94#
对于移动和重定向文件,它看起来不像有
-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
等。aiqt4smr5#
在Linux shell中,许多命令接受多个参数,因此可以使用通配符。例如,如果你想将所有文件从文件夹A移动到文件夹B,你可以这样写:
字符串
如果你想将所有文件以某种“外观”移动到它,你可以这样做:
型
将blablabla.txt文件复制到文件夹B
星星(*)可以替换任意数量的字符或字母,而?可以替换一个。例如,如果您有许多文件的形状为file_number.ext,并且您只想移动那些有两位数字的文件,您可以使用这样的命令:
型
或者更复杂的例子:
型
对于看起来像fi<-something->_<-two characters->.e的文件,<-something->
不像shell中的许多命令需要-R来(例如)复制或删除JavaScript,mv自己完成。
记住mv会自动覆盖(除非被覆盖的文件是只读的或者你没有权限),所以要确保你在这个过程中不会丢失任何东西。
为了方便以后的学习,如果你有一个你想要复制的命令,你可以使用-R选项,表示你想要递归地执行这个命令。所以它看起来像这样:
型
顺便说一句,我所说的也适用于rm(删除,删除)和cp(复制),小心,因为一旦你删除,就没有回头路了!避免像
rm * -R
这样的命令,除非你确定你在做什么。yx2lnoni6#
如果你只需要对所有的覆盖提示回答“y”,试试这个:
字符串