如何使用命令行将所有文件从一个文件夹移动到另一个文件夹?
我想知道如何使用命令行将文件夹中的所有文件移动到另一个文件夹。
假设我在我的下载文件夹中,有100个文件,我想移动到我的video文件夹,而不必写所有文件名。
打开终端并执行以下命令:
mv -v ~/Downloads/* ~/Videos/
它会将所有文件和文件夹从Downloads文件夹移动到Videos文件夹。
要移动所有文件,而不是文件夹:
如果您有兴趣将所有文件(但不是文件夹)从“下载”文件夹移动到“video”文件夹,请使用此命令
find ~/Downloads/ -type f -print0 | xargs -0 mv -t ~/Videos
要仅从“下载”文件夹中移动文件,而不从子文件夹中移动文件:
如果要从“下载”文件夹中移动所有文件,而不是“下载”文件夹中文件夹中的任何文件,请使用以下命令:
find ~/Downloads/ -maxdepth 1 -type f -print0 | xargs -0 mv -t ~/Videos
这里, -maxdepth
选项指定find应该尝试的深度, 1
表示只有find命令中指定的目录。 您也可以尝试使用2
进行测试。
有关详细说明,请参阅Ubuntu 查找联机帮助页
mv ~/Downloads/* ~/Videos
它将移动所有文件,包括您想要mv
的目录中的子文件夹。 如果你想要cp
(复制)或rm
(删除),你需要-r
(递归)选项来包含子文件夹。
可以使用rsync
,例如:
rsync -vau --remove-source-files src/ dst/
哪里:
-v
, –--verbose
:增加详细程度。
-a
, –--archive
:存档模式; 等于-rlptgoD
(无-H
,-A
,-X
)。
-u
, –--update
:跳过接收器上较新的文件。
--remove-source-files
这告诉rsync从发送端删除作为传输一部分并且已在接收端成功复制的文件(意味着非目录)。
如果您具有root权限,请使用sudo
作为前缀以覆盖潜在的权限问题。
使用
mv -v ~/rootfolder/branch/* ~/rootfolder
我希望这有帮助。 因为我有同样的痛苦,浪费了很多时间来修复我的错误。
对于简单的情况:
mv ~/Downloads/* ~/Videos
如果您也想移动点文件,请设置dotglob shell选项。
shopt -s dotglob mv ~/Downloads/* ~/Videos
这将保留shell选项集。
使用dotglob一次,在子shell中运行命令:
(shopt -s dotglob; mv ~/Downloads/* ~/Videos)
- 转到命令行,使用
cd folderNamehere
进入要将其移动到的目录 - 输入
pwd
。 这将打印您想要移动它的目录。 - 然后切换到
cd folderNamehere
所有文件所在的目录 - 现在移动所有文件类型
mv *.* typeAnswerFromStep2here
这会将所有文件从该目录移动到另一个目录。
要将包含或不包含content的目录移动到其新名称,就像使用mv
命令重命名文件一样:
mv -T dir1 dir2
哪里:
-
-T
将目标视为普通文件 -
dir1
是目录的原始名称 -
dir2
是目录的新名称
注意: dir2
不一定存在。
我希望这可以节省很多时间,作为一个菜鸟,在此之前,我将使用新名称创建一个目录,然后将目录的内容移动到之前创建的目录中。
用于子目录
当许多文件保存在目标目录的子文件夹中时,此命令很有用,即Downloads/mp4
。 在此示例中,运行mv -T Downloads/mp4 Videos
将导致删除 mp4
子文件夹, 并将包含在其中的所有文件移动到Videos文件夹。
试试吧
find ~/Desktop -type f -iname "*.mp4" -exec mv {} ~/Videos \;
-type with the -type你可以指定type file.on这个语句是文件的平均值。使用-d表示目录。
-iname:查找文件最常见,最明显的方法是使用-name参数。如果你不确定它的区分大小写,可以使用-iname参数
mv {} ,最后指定目标目录,然后使用mv {}参数在那里移动文件