当前工作服务器的图像按照以下文件夹结构排列:
.
└── 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 以执行操作。