编写脚本来重命名和移动文件

编写脚本来重命名和移动文件

当前工作服务器的图像按照以下文件夹结构排列:

.
└── Plans
    ├── Area 1
    │   ├── Location 12.jpg
    │   ├── Location 34.jpg
    │   └── Location 37.jpg
    └── Area 2
        ├── Location 2.jpg
        ├── Location 43.jpg
        └── Location 54.jpg

步骤 1) 我想为每个 .jpg 文件创建一个新文件夹,标签与 .jpg 文件相同,但没有文件扩展名(“jpg”)。这将与 .jpg 文件位于同一目录中。

步骤 2)在新创建的文件夹中,我想创建 2 个新子文件夹 - “销售”和“研讨会”

步骤 3)将 .jpg 文件移动到“Workshop”子文件夹内。

步骤4)在所有.jpg文件后附加“- Workshop”。

最终结构:

.
└── Plans
    ├── Area 1
    │   ├── Location 12
    │   │   ├── Sales
    │   │   └── Workshop
    │   │       └── Location 12 - Workshop.jpg
    │   ├── Location 34
    │   │   ├── Sales
    │   │   └── Workshop
    │   │       └── Location 34 - Workshop.jpg
    │   └── Location 37
    │       ├── Sales
    │       └── Workshop
    │           └── Location 37 - Workshop.jpg
    └── Area 2
        ├── Location 2
        │   ├── Sales
        │   └── Workshop
        │       └── Location 2 - Workshop.jpg
        ├── Location 43
        │   ├── Sales
        │   └── Workshop
        │       └── Location 43 - Workshop.jpg
        └── Location 54
            ├── Sales
            └── Workshop
                └── Location 54 - Workshop.jpg

我迄今为止的尝试...对于步骤 4,我已设法通过研究想出这个命令。

find . -name "*.jpg" -exec rename -v 's/.jpg/ - Workshop.jpg/' {} \+

但是,我正在努力使用 find 命令以正确的结构创建文件夹和子文件夹。

答案1

尝试:

find ./Plans/Area* -type f -name '*.jpg' -execdir bash -c '
    echo mkdir -p "${1%.jpg}/"{Sales,Workshop} && \
    echo mv -v "$1" "${1%.jpg}/Workshop/${1%.jpg} - Workshop.jpg";
' bash_find {} \;

删除echo上面的 s 以执行操作。

相关内容