使用路径重命名不同目录中的文件

使用路径重命名不同目录中的文件

我不知道我是否说得通,但这大致是我正在处理的事情,以防万一我会包含一些文件夹名称中包含 .jpg 的内容:

Photos$ tree
.
├── 1
│   ├── 1.jpg
│   │   └── X
│   │       └── Y
│   │           ├── A
│   │           │   └── image.jpg
│   │           └── B
│   │               └── image.jpg
│   └──2.jpg
│      └── X
│          └── Y
│              ├── A
│              │   └── image.jpg
│              └── B
│                  └── image.jpg
└── 2
    ├── 1.jpg
    │   └── X
    │       └── Y
    │           ├── A
    │           │   └── image.jpg
    │           └── B
    │               └── image.jpg
    ├── 2.jpg
    │   └── X
    │       └── Y
    │           ├── A
    │           │   └── image.jpg
    │           ├── B
    │           │   └── image.jpg
 

理想情况下,通过目录名称,我希望它能够识别正确的顺序并相应地重命名图像1.jpg......8.jpg

如果太复杂,则用其路径重命名它们:

  • 1_1.jpg_X_Y_A_image.jpg
  • 2_2.jpg_X_Y_B_image.jpg
  • ETC。

...也许有一种方法可以一次性提取所有实际的 jpg。

我试过(这个答案](使用文件夹名称重命名文件并将其移动到一个大文件夹),我猜我应该让它更好地适应我有多少个子文件夹,但我不知道该怎么做。

这是我尝试适应目录的一种方法:

user:~/home/test$ mkdir folder
user:~/home/test$ for file in Photos*/*/*.jpg/X*/Y*/*/*.jpg; do
> mv "$file" "folder/${file/\//_}"
> done

结果总是

mv: cannot move 'Photos/1/1.jpg/X/Y/A/image.jpg' to 'folder/Photos/1/1.jpg/X/Y/A/image.jpg': No such file or directory
mv: cannot move 'Photos/2/2.jpg/X/Y/B/image.jpg' to 'folder/Photos/2/2.jpg/X/Y/B/image.jpg': No such file or directory

我做错了什么?有超过 1000 张图片,所以我无法手动完成!

相关内容