我想知道如何使用命令行将所有文件从一个文件夹移动到另一个文件夹。

假设我在我的“下载”文件夹中,并且有100个文件我想移动到“我的视频”文件夹,而无需写下所有文件名。

评论

您在询问有关移动文件的问题,但是有人向您展示了如何不仅移动文件而且还移动文件夹。可以吗?

@HontváriLevente一年前给出了一个答案,它似乎是迄今为止最好,最简洁,最简单的方法,并且可以正常工作。那么,它是如何获得3票的(与目前顶部的262票相比)?

#1 楼

打开终端并执行以下命令:

mv  -v ~/Downloads/* ~/Videos/


它将所有文件和文件夹从“下载”文件夹移动到“视频”文件夹。


要移动所有文件,但不移动文件夹:

如果您有兴趣将所有文件(而不是文件夹)从“下载”文件夹移动到“视频”文件夹,请使用此命令

find ~/Downloads/ -type f -print0 | xargs -0 mv -t ~/Videos


要仅从“下载”文件夹移动文件,而不从子文件夹移动:

如果要从“下载”文件夹移动所有文件,而不要移动其中的任何文件在“下载”文件夹中的文件夹中,请使用以下命令:

find ~/Downloads/ -maxdepth 1 -type f -print0 | xargs -0 mv -t ~/Videos


此处,-maxdepth选项指定应尝试执行的深度查找,1表示仅在find命令中指定的目录。您也可以尝试使用23进行测试。

有关详细说明,请参见Ubuntu查找手册页

评论


您可以单独使用mv将整个目录移动到另一个文件夹:mv文件夹〜/ Documents

–JohnMerlino
2014年8月9日在22:42

仅供参考,我相信您的第一个命令(“ mv -v〜/ Downloads / *〜/ Videos /”)不会移动点文件。

– Mark Doliner
2014年12月23日下午6:11

是的,它不会移动.files

–安瓦尔
2014年12月24日18:11

Nb。您的-print0 | xargs -0 mv -t〜/视频可以使用-exec mv -t〜/ Videos \ {\} \ + :-)更有效地完成

– artfulrobot
2015年6月9日在13:46

mv -v〜/ Downloads / *〜/ Videos /不适用于隐藏文件

– FreeLightman
18年3月18日在15:20

#2 楼

mv ~/Downloads/* ~/Videos


它将所有文件(包括子文件夹)移动到您想要的目录mv中。如果要cp(复制)或rm(删除),则需要-r(递归)选项以包括子文件夹。

评论


我的mv命令没有-R选项(Ubuntu 14.04)。

– Mark Doliner
2014年12月23日下午6:10

@MarkDoliner,是的,MV不需要递归选项来包含子文件夹。也可以将其用于重命名。

– AliN
2015年1月25日23:26

我不需要*。没有使用星星也发生了同样的事情。

– MycrofD
17 Mar 22 '17 at 13:28

文件夹名称前缀中的〜/并不总是有效(不适用于bash和git atleast)

–Krish Munot
17年6月6日23:00

如果源目录为空,则此解决方案将产生错误。

–皮埃尔·蒂博(Pierre Thibault)
18年7月26日在13:04

#3 楼

对于简单的情况:

mv ~/Downloads/* ~/Videos


如果您也要移动点(隐藏)文件,请设置dotglob shell选项。

shopt -s dotglob
mv ~/Downloads/* ~/Videos


这将保留shell选项集。

要一次使用dotglob,请在子shell中运行命令:

(shopt -s dotglob; mv ~/Downloads/* ~/Videos)


评论


给自己的说明:最后一个选项(shopt -s dotglob; mv〜/ Downloads / *〜/ Videos)仅移动(剪切)内容(包括隐藏文件)。在这种情况下,原始文件夹和目标文件夹都必须已经存在。最后,原始目录变为空。

– Pathros
19-4-26在3:25



这应该是公认的答案

– Megar
19年5月10日在9:26

#4 楼

可以通过使用rsync来实现,例如:
rsync -vau --remove-source-files src/ dst/

其中:

-v--verbose:增加详细程度。
-a--archive:存档模式;等于-rlptgoD(否-H-A-X)。
-u--update:跳过接收方上较新的文件。
--remove-source-files这告诉rsync从发送方删除文件(意味着非目录)。

如果您具有root特权,请在sudo前面加上前缀以覆盖潜在的权限问题。

评论


警告!如上所述的--delete-after选项无法按您期望的方式工作。成功复制后,它不会删除源文件...它会删除目的地中的所有剩余文件/其他文件。 (如@kenorb所指出的...但是我没有足够仔细地阅读!DOH)

–杰伊·马尔姆(Jay Marm)
18年8月10日在4:06



#5 楼

要将包含或不包含内容的目录移动到新名称,就像使用mv命令重命名文件的方式一样:

mv -T dir1 dir2

其中:



-T将目标视为普通文件

dir1是目录的原始名称

dir2是目录的新名称目录

NB:dir2不必存在。

作为一个菜鸟,我希望这可以节省很多时间,在此之前,我会创建一个包含以下内容的目录新名称,然后将目录的内容移动到之前创建的目录。

用于子目录

当许多文件已保存在的子文件夹中时,此命令很有用目标目录,即Downloads/mp4。在此示例中,运行mv -T Downloads/mp4 Videos将导致删除mp4子文件夹,并将其中包含的所有文件移动到“视频”文件夹。

评论


+1是因为经过测试,可以在Xubuntu 14.04中正常工作。我在此答案中添加了一个示例,以显示此命令将导致删除dir1。除了这种预防措施,该答案还指出了一些日常使用的好处。

–user37165
2015年12月9日在8:45

“将包含或不包含内容的目录移动到新名称”如何将目录...移动到名称?这是没有意义的。 “ -T将目标视为普通文件”目标如何成为文件?你是指目录吗?

–莫妮卡·赫德内克(Monica Heddneck)
17年4月29日在23:55

就像将文件重命名为新名称一样,就像使用mv fileA fileB一样,但是在这种情况下,-T标志将目标/目录视为文件并重命名。

– Feyisayo Sonubi
17年4月30日在22:10

为我工作:)

–Naveen Kumar V
19年3月12日在20:14

这应该是公认的答案。

– hmcclungiii
20 Mar 15 '20在8:44

#6 楼

使用

mv -v ~/rootfolder/branch/* ~/rootfolder


我希望这会有所帮助。因为我同样痛苦,浪费了很多时间来纠正错误。

#7 楼

mv source_path/* destination_path/


在这里,您必须在源路径后提出斜杠和*,以便它将文件包含在source_path而不是完整的源目录中。

示例:mv /home/username/test/* /home/username/test2/

以上命令将源目录中的所有文件(除非它们被隐藏)移动到目标目录。

#8 楼


转到命令行,并使用cd folderNamehere进入要将其移至的目录。

键入pwd
然后将要打印的目录也打印出来。
然后使用cd folderNamehere转到所有文件所在的目录

现在要移动所有文件,键入mv *.* typeAnswerFromStep2here


会将所有文件从该目录移动到另一个目录。

评论


没有任何扩展名的文件将不匹配。例如,如果文件夹中包含以下文件:foo.txt,bar。和酒吧都酒吧。和酒吧将不会被移动。使用*代替*。*就可以了。但是在两种情况下,都不会移动诸如.foobar之类的隐藏文件。

–丹
2013年9月12日14:20



#9 楼

尝试

find ~/Desktop -type f -iname  "*.mp4" -exec mv {} ~/Videos \;


-type
使用-type参数,您可以指定类型file。在此语句上是平均值文件。如果使用-d这意味着目录。

-iname:
查找文件的最常见,最明显的方法是使用其-name参数。如果不确定其是否区分大小写,则可以使用-iname参数

mv {}
,最后指定目标目录,然后使用mv {}参数
将文件移动到该目录

#10 楼

只是想再添加一个答案。如果您已经在要移出文件的文件夹中,则可以执行以下操作:

mv * ~/Videos


评论


该答案是该现有答案的重复:askubuntu.com/a/387727

–卡雷尔
20-2-29在4:03

@karel该答案旨在涵盖以下情况:“如果您已经在文件夹中,则要移出文件”,因此显示的命令与此答案中的命令不同。不管有人认为提供一个答案来解决此问题是否有用,该答案并非该答案的重复。

– Eliah Kagan
20-2-29在14:26

在耶利米书13:23中说豹子不能改变它的位置。

–卡雷尔
20 Mar 1 '20 at 0:38



感谢您的备份@Eliah Kagan

–约翰·索利(John Solly)
20 Mar 1 '20 at 5:30

#11 楼

此命令应执行以下操作:
sudo find ~/Downloads -mindepth 1 -prune -exec mv '{}' ~/Videos \;

它移动所有可见和隐藏文件,并且即使源目录为空也不会引发不必要的错误。