#1 楼
使用名为“ myfolder”的文件夹并在文件层次结构中上一层(您要放置的位置),命令将是:mv myfolder/* .
数据在
/home/myuser/myfolder
中,然后从/home/myuser/
运行命令。#2 楼
只是为了使内容清晰易懂,请参考上述Rudu的答案和注释。如果需要移动所有内容,包括以开头的文件。 (例如.htaccess,.git等),您需要在命令中同时包含*和。*。像这样:
mv subfolder/* subfolder/.* .
这会将子文件夹的内容移动到您的当前文件夹。注意最后一个“。”之前的空格。
评论
它有效,但是我得到了MV:重命名fake /。到./ .:无效的参数,而mv:将fake / ..重命名为./ ..:无效的参数
–马斯洛
19年7月19日在14:52
如果不确定目标文件夹中是否包含文件夹和文件,则分别运行命令,否则将提示:“未找到匹配项”
–托尔吉尼奥
7小时前
#3 楼
可以通过以下方法实现:使用
rsync
:rsync -vua --delete-after foo/ .
使用
cp
和rmdir
:cp -vaR foo/. . && rmdir foo/
使用
mv
(启用了dotglob
选项):shopt -s dotglob # Includes filenames beginning with a dot.
mv -- foo/* . # Where foo/ is the folder consisting the files.
shopt -u dotglob # Disables previously enabled dotglob option.
其中
foo/
是您的文件夹,其内容将向上移动一级。请参阅:
help shopt
和man bash
。 br /> mv foo/* foo/.[^.]* . && rmdir foo/
注意:它将丢失名为
mv
的文件。注意:对于POSIX外壳,您需要
foo/..bar..
。 /> 评论
rsync开关-v,-u,-a和-r在做什么?在AFAICT中,-v是冗长的,这仅使rsync打印更多信息。 -u表示更新-仅复制较新的文件。这似乎无关紧要。 -a表示存档。这将复制文件的所有者和权限,并使同步递归。 -r表示递归,但是-a已经涵盖了。
– rjmunro
17年2月7日在16:59
当您不想花费额外的时间移动已经存在的数据时(特别是对于慢速存储设备),-u非常有用。我已经删除了-r,因为正如您提到的那样,它已被-a覆盖。
– Kenorb
17年2月7日在17:03
mv foo / * foo /.[^.]*。例如会丢失一个名为foo / .. bar ..的文件。请注意,对于POSIX Shell,您需要[!。]。
–StéphaneChazelas
17年2月7日在17:24
应该提到的是rsync -vua --delete-after foo /。删除当前目录中可能已经存在的所有其他内容。
–大卫
18年4月24日在10:12
#4 楼
只需发出mv命令mv (directory)/* .
如果要删除目录,则添加
rm -rf (directory)
您在(目录)的父目录中
如果在(目录)内,则
mv * ../
评论
其他安全提示:删除目录时,您知道应该为空,如果目录不为空,则rmdir会抱怨并退出,而rm -r只会删除该目录及其所有内容。 (这是一个poka-yoke。)
– Anko
2014年6月14日11:40
好点!我想不出这样做的理由。
– Mark Lalor
15年11月21日在15:03
@MarkLalor原因之一可能是存在隐藏文件,例如macOS中无处不在的.DS_store。上面的mv命令不会移动这些命令(未设置dotglob)。
– AkselA
17-2-7在15:24
#5 楼
我有一个简短的命令cp */* .
这将在上级复制所有子文件夹的内容
当然可以使用move
mv */* .
或分配新的区域
cp */* /destination
#6 楼
对于共享服务器上的那些人,您必须使用类似的内容移动文件
mv -v ~/public_html/public_html/* ~/public_html/
复制文件
cp -a ~/public_html/public_html/* ~/public_html/
评论
上面的问题询问有关移动不复制内容的问题。这样可以通过将原始文件放在子文件夹中来复制文件。是否作为“共享”服务器也确实与此无关。
–卡莱布
2014年6月14日在11:04
您的权利,这就是答案...
–里卡多·豪克(Ricardo Havoc)
14年6月14日,11:11
重新编辑:与已经投票的答案有何不同? “共享服务器”与它有什么关系?如果这将是一个有用的贡献,可以为已经存在的内容增加价值,请进行编辑以解释这些项目。
–卡莱布
14年6月14日在11:16
我不同意共享服务器与它无关。输入“ dir”的方式与众不同。
–里卡多·豪克(Ricardo Havoc)
14年6月14日在11:17
花花公子你为什么这么生气?...哇...我只是在分享一点知识。我们每个人都有不同的理解,并以不同的方式面对不同的技术问题...祝你好运Caleb ..
–里卡多·豪克(Ricardo Havoc)
14年6月14日在11:19
#7 楼
如果通过使用mv * ../
收到“参数列表太长”错误,我建议改为这样做: find
:符合所需条件-name
:运行后面的命令-exec
:插入找到的文件名{}
:标记exec命令的结尾#8 楼
我认为最好的答案肯定是:mv myfolder/mysubfolder .
有时您会遇到两个文件夹具有相同名称的问题
mv myfolder myfolder.old
mv myfolder.old/myfolder .
rmdir myfolder.old
评论
如果归档文件包含点文件,则可能还需要匹配。*,而不仅仅是*。还要在末尾添加`&& rmdir myfolder`以删除现在无关的文件夹。这样可以节省时间,因为它仅在mv返回成功时运行,并且因为rmdir不会删除非空目录。
–卡莱布
11年8月24日在20:53
。*上的好点。删除原始文件夹既简单又不需要,因此我们让OP自己处理。
– Rudu
11年8月24日在20:57
@Caleb是否可以在一行中同时编写*和。*?好奇而已
–理查德
2012年11月13日在20:40
@Richard是的。 mv的参数都将是源,除了LAST参数需要作为移动目标(并且在使用多个源的情况下,必须是文件夹)。
–卡莱布
2012年11月13日20:50
我正在使用bash:/ bin / mv:参数列表过长
–dragosrsupercool
2014年11月17日7:46