如何通过mv命令将所有文件和文件夹从一个目录移动到另一个目录?
#1 楼
试试这个:mv /path/sourcefolder/* /path/destinationfolder/
#2 楼
zsh:mv /src/*(D) /dst/
(D)
包含点文件。评论
(D)的语法错误为何?
– Pathros
18年6月23日在17:12
@Pathros,可能是因为您不想在zsh中这样做。
–StéphaneChazelas
18年6月23日在19:13
我知道很多年前我接受了第一个答案,现在改变它对我来说很愚蠢。但是实际上,我一直在使用这种方法。
–卢卡
18年7月20日在11:23
#3 楼
这在Bash中对我有用(我认为这很大程度上取决于您的外壳...)$ mv source/{,.}* /destination/folder/here
评论
实际上,它不应该这样,因为在Bash中,source /{,.}*与名为./和../的目录项匹配。
– poige
2012年10月10日21:48
。由于语法而被跳过,..也被跳过,因为两个位置都相同(mv命令实现了这种情况)。已记录您的担忧,但该命令确实起作用。
–尼尔·伯恩(Niall Byrne)
2012年10月10日在22:39
当我尝试播放mv时:覆盖“目的地/”。 mv:覆盖'destination / ..'?,但是将-n添加到mv可以阻止它尝试覆盖
–普特尼克
2012-12-5 20:05
@Putnik-这是一个很好的陷阱!什么操作系统/发行版? (当我搞砸这个时候我正在OSX上工作...)
–尼尔·伯恩(Niall Byrne)
2012-12-7 3:38
@Niall Byrne-我看到的提示与Putnik相同。使用Ubuntu 14.04。
– Mark Doliner
2014年12月23日下午6:16
#4 楼
这在Bash 4.2.46中对我有效,它将所有文件和文件夹(包括隐藏文件和文件夹)移动到另一个目录。<。除以外的所有隐藏文件。和..
评论
。[^。] *(或其POSIX等效项[[!。] *)也排除..anything文件。
–StéphaneChazelas
16-10-26在12:30
它也可以在tcsh中工作。
– Jaime M.
18年2月12日在14:45
unix.stackexchange.com/a/402856/93768包含完整的正确表达式。
– DJCrashdummy
18/09/6在18:50
它为我的.git文件夹显示“目录不为空”
–托马斯·韦勒(Thomas Weller)
19年4月26日在10:09
#5 楼
我说这有点无聊,但是真正的防弹(GNU)方式是:cd /SourceDir && find ./ -maxdepth 1 -mindepth 1 -exec mv -t /Target/Dir {} +
P。 S.现在您可能会明白为什么很多人确实喜欢Midnight Commander。
#6 楼
如果您只想执行剪切和粘贴之类的操作,那么有一种对我有用的简单方法:到目录
dir_source
#7 楼
还有另一种方法,因为它很复杂(因为我喜欢用复杂的方法来做我猜的事情)非常普遍,并且不使用
-Q
,您需要更改IFS(这意味着您不需要评估,而需要引用变量)。cd /source
for f in $(\ls -QA); do eval mv $f /destination/$f; done
评论
ls -Q不会以适合与eval甚至$(...)一起使用的格式输出。例如,在运行后触摸“ $(reboot)”(或使用“ $(uname)”以获取较轻版本)。
–StéphaneChazelas
2015年10月8日14:56
-A现在是POSIX(自POSIX.1-2008起)。
–StéphaneChazelas
2015年10月8日14:58
评论
这将不包含任何“隐藏”文件(例如.htaccess)
–本·莱萨尼-索纳西
2012年10月5日12:53
好点子。如果使用bash,则可以运行shopt -s dotglob,然后“ *”也将匹配隐藏文件。
–chutz
2012年10月5日14:52
如果目标文件夹中有相同名称的文件夹和文件,该怎么办?他们被覆盖了吗?
–user1063287
16年6月14日在1:08
...似乎没有覆盖具有相同名称的文件夹。 mv:无法将“ / a / js”移动到“ / b / js”:目录不为空
–user1063287
16年6月14日在1:29
您只需将-f传递给它即可覆盖
–卢卡
18年7月20日在11:22