递归地移动一个目录中的多个目录

递归地移动一个目录中的多个目录

我有一个目录,其中包含多个目录,也包括子目录。我想同时将其中一些移动到一个(使用一个命令)

例子

Main Directory
     Sub1
        Subsub1
        Subsub2
     Sub2
        Subsub1
        Subsub2
     Sub3
        Subsub1
        Subsub2
     Sub4
        Subsub1
        Subsub2
     Sub5
        Subsub1
        Subsub2
     Test
 -----------------------

我想将 Sub1、Sub2、Sub3 包括它们的子目录移动到 Test 文件夹中,所以最后我会有这样的东西

Main Directory
     Sub4
        Subsub1
        Subsub2
     Sub5
        Subsub1
        Subsub2
     Test
         Sub1
             Subsub1
             Subsub2
         Sub2
             Subsub1
             Subsub2
         Sub3
             Subsub1
             Subsub2
 -----------------------

答案1

您还可以-t通过命令使用 flag来执行此操作mv

语法如下所示。

mv -t <destination> <src1> <src2> .... <srnN>

您也可以以相反的方式执行此操作:

mv file1 file2 file3 -t DESTINATION

在你的情况下将是:

mv -t Test/ Sub1/ Sub2/ Sub3/

来源:开发运维立方体/询问Ubuntu

答案2

假设"Main Directory"/Test存在:

mv "Main Directory"/Sub[1-3] "Main Directory"/Test

这里唯一发生的事情是将目录移动到Test目录中。Sub1Sub2和中的文件Sub3仍可在相同目录中使用,但现在位于新路径"Main Directory"/Test/Sub1等下。


更新信息在下面的评论中,假设bash用作 shell:

mkdir -p "Main Directory"/Test
mv "Main Directory"/episode_{0000..0049} "Main Directory"/Test

大括号扩展"Main Directory"/episode_{0000..0049}将扩展为Main Directory/episode_0000 Main Directory/episode_0001... Main Directory/episode_0049

答案3

您可以使用花括号指定,

mv {Sub1, Sub2, Sub3} Test/

相关内容