【发布时间】:2015-07-07 09:18:07
【问题描述】:
我有几个共享文件名的不同图像的文件夹,文件夹结构如下:
/parent/folder001/img001.jpg
/parent/folder001/img002.jpg
/parent/folder002/img001.jpg
/parent/folder002/img002.jpg
/parent/folder003/img001.jpg
/parent/folder003/img002.jpg
...
并希望将这些文件复制/重命名到一个新文件夹中,如下所示:
/newfolder/folder001_img001.jpg
/newfolder/folder001_img002.jpg
/newfolder/folder002_img001.jpg
/newfolder/folder002_img002.jpg
/newfolder/folder003_img001.jpg
/newfolder/folder003_img002.jpg
...
(如果 newfolder 不是父文件夹的子文件夹可能会更好,因为这可能最终导致非常奇怪的递归。)
所有包含图像的文件夹都没有任何子文件夹。
理想情况下,我希望能够重复使用该脚本来“更新”新文件夹,因为我可能需要稍后添加更多包含图像的文件夹。
如何使用 shell 脚本完成此操作?
【问题讨论】:
-
好吧,手动重命名它们并不是一个真正的选择,有数百个。恐怕我自己还不太擅长 shell,但是寻找解决方案只会完全针对不同的问题/目录结构找到结果。
-
是否将源文件夹(在本例中为“/parent/”)和目标文件夹(在本例中为“/newfolder”)作为输入,然后抓取源文件夹中的所有文件夹进行合并进入目标文件夹?
-
在相应地重命名源文件夹中文件夹中的文件时,是的。那将非常有帮助!虽然我想如果脚本从父文件夹内部运行并将图像文件夹合并到与父文件夹位于同一目录中的文件夹中可能就足够了?
-
我明白了。所以没有输入脚本。源目录和目标目录是当前目录。你可以重新运行它来更新。此外,更新是否会导致删除不再位于子目录中的文件?
-
啊,不,这不是真的必要。只需对图像文件夹中当前存在的文件进行复制重命名就足够了。 (因为它所要做的就是在执行脚本和其他内容之前删除目标文件夹中的所有文件。)
标签: linux shell unix rename batch-rename