当前位置: 首页>>技术教程>>正文


如何将当前文件夹中的所有文件移动到子文件夹?

,

问题描述

我在路上:

/myuser/downloads/

我创建了一个子文件夹:

/myuser/downloads/new

现在我想将下载文件夹中的所有文件和文件夹/sub-folders移动到sub-folder。

我怎样才能做到这一点?

我试过了:

mv -R *.* new/

但是看起来移动并没有采用-R开关。

最佳解决思路

命令

mv !(new) new

应该做的伎俩。如果不起作用,请先运行shopt -s extglob

要同时移动隐藏文件/目录(以点开头),请先运行shopt -s dotglob。所以,总结一下:

shopt -s extglob dotglob
mv !(new) new
shopt -u dotglob

(最好不要设置dotglob以避免不良意外)。

次佳解决思路

我发现了类似的东西,但理解起来有点简单,它也可能适合你:

ls | grep -v new | xargs mv -t new

在上述解决方案中添加说明:

从手册页:

  • mv -t

    -t, --target-directory=DIRECTORY
          move all SOURCE arguments into DIRECTORY
    
  • grep -v

    -v, --invert-match
          Invert the sense of matching, to select non-matching lines.
    

按步骤说明:

  • ls将列出当前目录中的文件

  • grep -v new将返回管道,这与新的不匹配

  • xargs mv -t new将从grep -v移动到它的文件到目标目录

第三种解决思路

简单的想法。假设您在/myuser中,将下载重命名为new,创建一个新的下载目录,然后将其移入新目录。

mv downloads new # downloads is now called new
mkdir downloads # create new directory downloads
mv new downloads # move new into it.

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/2205.html,未经允许,请勿转载。