【问题标题】:Move files to new folder structure using Terminal使用终端将文件移动到新的文件夹结构
【发布时间】:2017-07-06 12:52:51
【问题描述】:

简单问题:我需要使用终端中的一些 shell 脚本将图像从旧目录结构移动到新目录结构。旧文件结构如下:

Parent.Folder -- Folder1
                 Folder2
                 Folder3

在每个 FolderX 中,我们有更多的文件夹:

Folder1 -- CAM1
           CAM2
           CAM3

在每个 CAM 文件夹中,我们都有图像:

CAM1 -- image1.jpg
        image2.jpg
        image3.jpg

我需要切换文件夹结构,这样:

Parent.Folder -- CAM1
                 CAM2
                 CAM3

包含:

CAM1 -- Folder1 -- image1.jpg
                -- image2.jpg
                -- image3.jpg
     -- Folder2 -- ...etc...
     -- Folder3 -- ...etc...

脚本需要是动态的,因为我需要将它应用于许多不同大小的数据集。

感谢任何帮助。提前致谢!

【问题讨论】:

  • 这很容易使用嵌套循环,甚至 prename 。你试过什么?
  • 我还没有尝试过任何东西,因为我对终端的经验很少。目前我一直在手动进行,这并不理想。

标签: bash shell


【解决方案1】:
$ cd parent.folder
$ find . -type f
./Folder3/CAM2/image3.jpg
./Folder3/CAM2/image2.jpg
./Folder3/CAM2/image1.jpg
./Folder3/CAM1/image3.jpg
./Folder3/CAM1/image2.jpg
./Folder3/CAM1/image1.jpg
./Folder2/CAM3/image3.jpg
./Folder2/CAM3/image2.jpg
./Folder2/CAM3/image1.jpg
./Folder2/CAM2/image3.jpg
./Folder2/CAM2/image2.jpg
./Folder2/CAM2/image1.jpg
./Folder2/CAM1/image3.jpg
./Folder2/CAM1/image2.jpg
./Folder2/CAM1/image1.jpg
./Folder1/CAM3/image3.jpg
./Folder1/CAM3/image2.jpg
./Folder1/CAM3/image1.jpg
./Folder1/CAM2/image3.jpg
./Folder1/CAM2/image2.jpg
./Folder1/CAM2/image1.jpg
./Folder1/CAM1/image3.jpg
./Folder1/CAM1/image2.jpg
./Folder1/CAM1/image1.jpg

$ for i in Folder*/CAM*/; do
    mkdir -p "$(basename $i)";
    mv "$i" "$(basename "$i")/$(dirname "$i")";
  done

 $ find . -type f
./CAM3/Folder2/image3.jpg
./CAM3/Folder2/image2.jpg
./CAM3/Folder2/image1.jpg
./CAM3/Folder1/image3.jpg
./CAM3/Folder1/image2.jpg
./CAM3/Folder1/image1.jpg
./CAM2/Folder3/image3.jpg
./CAM2/Folder3/image2.jpg
./CAM2/Folder3/image1.jpg
./CAM2/Folder2/image3.jpg
./CAM2/Folder2/image2.jpg
./CAM2/Folder2/image1.jpg
./CAM2/Folder1/image3.jpg
./CAM2/Folder1/image2.jpg
./CAM2/Folder1/image1.jpg
./CAM1/Folder3/image3.jpg
./CAM1/Folder3/image2.jpg
./CAM1/Folder3/image1.jpg
./CAM1/Folder2/image3.jpg
./CAM1/Folder2/image2.jpg
./CAM1/Folder2/image1.jpg
./CAM1/Folder1/image3.jpg
./CAM1/Folder1/image2.jpg
./CAM1/Folder1/image1.jpg

请注意,此代码假定您提到的某些文件夹结构。如果您在问题中提到的与现实有任何不同,这可能行不通。

【讨论】:

  • 像魅力一样工作。谢谢!
猜你喜欢
  • 2015-08-25
  • 2012-05-20
  • 2020-08-30
  • 2021-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-21
  • 1970-01-01
相关资源
最近更新 更多