命令行 如何让 mv ( * 通配符) 移动隐藏文件?

分享于 

3分钟阅读

ubuntu

  繁體

问题

当我移动文件到目录中,不复制(mv/tmp/home/rcook/*/home/rcook/)隐藏的文件,如何让mv移动它们?

如果我这样做:


mkdir a


mkdir b


touch a/.foo


touch a/bar


mv a/* b/


ls -a a/ b/



我看到这个:


a/:


. .. .foo



b/:


. .. bar



有人建议我执行mv src/.* dest/的操作,我在测试目录中尝试了这个,


rcook$ ls -a a/ b/


a/:


. .. bar .foo



b/:


. ..


rcook$ mv a/.* b/


mv: cannot move 'a/.' to 'b/.': Device or resource busy


mv: cannot remove 'a/..': Is a directory


rcook$ ls -a a/ b/


a/:


. .. bar



b/:


. .. .foo




答案1

你可以这样做:


shopt -s dotglob


mv /tmp/home/rcook/* /home/rcook/



你可以把

 
shopt -s dotglob



复制.文件的另一种方法:


mv /tmp/home/rcook/.[!.]* /home/rcook/



不要使用模式..*,因为它与.. (指向父目录的指针)匹配。


答案2

尝试以下方法:


mv src/* src/.* dst/




~/scratch [andrew] $ mv from/* from/.* to/


mv: cannot move 'from/.' to 'to/.': Device or resource busy


mv: cannot remove 'from/..': Is a directory


~/scratch [andrew] $ ls -a from/ to/


from/:


. ..



to/:


. .. test .test




答案3

尝试以下方法:


mv /tmp/home/rcook/{*,.[^.]*,..?*} /home/rcook/




答案4

两种可能的解决方案,第一种方法是使用cp,将当前目录复制到目标目录。


cp -Rp . /desired/directory



另外,如果您知道文件的名称是明智的(没有空格,通配符,不可打印的字符),则可以执行以下操作


mv $(ls -A) /desired/directory




答案5

即使用glob,要复制文件,也需要用.作为文件前缀,例如mv -u .* foo


答案6


a


|-- .foo


`-- bar



 
b



 
$ mv --help




$ mv a/ b/ -T




答案7


cp -Rp source-directory/. .





COM  文件  COMM  files  Comma  命令行  
相关文章