一段时间以来,我一直在反对这一点,但我真的不是一个好的剧本作家。道歉...
我正在运行 Ubuntu/gnome 18.10,并且有大量从我妻子的 mac 导出的图片。目录结构为:
year1
(login dir name with spaces) - Month
Image names
year2
...
如:
2013
May 4, 2013
Image1.jpg
Image2.jpg
May 5, 2013
Image 1.jpg
Image 3.jpg
June 22, 2013
我想要的是:
2013
January
All the "january" images...
February
All the...
我可以轻松地创建目录mkdir {January..December}
就足够了。但我不知道如何遍历丑陋的目录树(从 Mac 导出),移动图像,然后删除丑陋的目录。
有一个应用程序可以在单个命令行中移动和重命名文件 -
exiftool
就我而言,使用的特定命令行是
或者
取决于图像中存在哪个标签。如果请求的标签不存在,应用程序会抛出警告并且不会移动该文件,而是继续处理。此应用程序还通过在文件名末尾附加一个数字来处理具有相同日期/时间的多个图像。
我确实有几个没有 exif 数据的图像,我可以使用命令将 exif 数据添加到图像中
例如,我将一些图像放在目录 ~/aa/test1 中并运行该工具,将输出放在 ~/aa/test2 中。结果如下:
这是这样的脚本:
该脚本应在图像所在的第一级目录中执行。您应该调整目标目录 -
DEST="/tmp/new-order-pictures/"
. 此版本的脚本依赖于所有文件都位于以某种方式包含月份名称的目录中。使用示例:在我的例子中,脚本被命名
order.sh
并且它位于~/bin
,因此我可以将它用作 shell 命令。在示例中,您可以看到目录结构已更改,但两种结构中的文件数均为 14。这是另一个版本的脚本,它使用
mv
而不是cp
处理不在包含月份名称的目录中的文件。在运行此脚本之前,最好创建原始目录结构的备份副本。使用示例:
之后,您可以进入目标目录并使用循环
rename
内的命令for
来处理长名称:例子:
或者您可以
(\.[0-9a-zA-Z]+)
使用(\.jpg)
,然后在下一次迭代中使用(\.mpg)
(分别Image-
使用Video-
)等进行更改。有关此用法的参考rename
:如何从命令行按顺序重命名多个文件?
一次重命名数百个文件以进行正确排序
所以,我假设你想要一个循序渐进的简单解决方案。首先,我将解决文件夹中的空白和逗号问题。我会先 cd 进入 year 文件夹并用于
rename
首先删除 Whitespace同样,去掉逗号
现在我已经拥有了所需的所有文件夹,我将使用创建一个基于月份的列表
现在制作文件夹“一月”
然后通过列表循环使用
xargs
以复制其内容