问题描述
我想知道如何使用命令行将文件夹中的所有文件移动到另一个文件夹。
假设我在我的Downloads文件夹中,并且有100个文件我想移动到我的Videos文件夹中,而无需编写所有文件名。
最佳解决方法
打开一个终端并执行以下命令:
mv -v ~/Downloads/* ~/Videos/
它会将所有文件和文件夹从Downloads文件夹移动到Videos文件夹。
要移动所有文件,但不移动文件夹:
如果您有兴趣将所有文件(但不是文件夹)从Downloads文件夹移动到Videos文件夹,请使用此命令
find ~/Downloads/ -type f -print0 | xargs -0 mv -t ~/Videos
要仅从“下载”文件夹中移动文件,但不能从sub-folders移动文件:
如果要从“下载”文件夹中移动所有文件,而不是“下载”文件夹中文件夹内的任何文件,请使用以下命令:
find ~/Downloads/ -maxdepth 1 -type f -print0 | xargs -0 mv -t ~/Videos
在这里,-maxdepth
选项指定查找应该尝试的深度,1
表示仅查找命令中指定的目录。您可以尝试使用2
,3
也进行测试。
有关详细说明,请参阅Ubuntu find manpage
次佳解决方法
mv ~/Downloads/* ~/Videos
它将移动所有文件,包括您想要的目录中的子文件夹mv
。如果您想要cp
(复制)或rm
(删除),您将需要-r
(递归)选项以包含子文件夹。
第三种解决方法
例如,可以使用rsync
:
rsync -vau --delete-after src/ dst/
哪里:
-
-v
,--verbose
:增加冗长度 -
-a
,--archive
:归档模式;等于-rlptgoD
(不包括-H,-A,-X
) -
-u
,--update
:跳过接收器上较新的文件 -
--delete-after
:在传输完成后删除接收端的文件
如果您拥有root权限,则以sudo
为前缀来覆盖潜在的权限问题。