Ola*_*Ola 1 command-line bash regex directory batch-rename
我需要将照片的目录结构从 /YEAR/MONTH/DAY/ 更改为 /YEAR-MONTH-DAY
我知道这可以通过 来完成exiftool,但它只适用于包含 EXIF 标签的文件,并且我有与每个图像对应的 xmp-sidecar 文件,这些文件也需要一起提供。所以我侦察某种脚本将是最好的方法。
我坐下来尝试学习 RegEx、sedbash 等等,如果有足够的时间,我想我应该能够解决这个问题,但现在我很着急,所以任何帮助将不胜感激。
//奥拉
Ubuntu 中的实用程序rename可以重命名目录结构,但它不会自行清理。
rename \'s#(.+)/(.+)/(.+)#$1-$2-$3#\' */*/*/\nRun Code Online (Sandbox Code Playgroud)\n\n-vn如果您只是想让它在重命名任何内容之前告诉您它将做什么,请坚持到底,但这里有一个小测试工具,可以向您展示什么是可能的:
$ mkdir -p 2014/06/15\n$ touch 2014/06/15/photo_{001..003}.jpg\n$ tree\n.\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 2014\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 06\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 15\n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 photo_001.jpg\n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 photo_002.jpg\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 photo_003.jpg\n\n$ rename \'s#(.+)/(.+)/(.+)#$1-$2-$3#\' */*/*/\n$ tree\n.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 2014\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 06\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 2014-06-15\n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 photo_001.jpg\n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 photo_002.jpg\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 photo_003.jpg\nRun Code Online (Sandbox Code Playgroud)\n\n简单地说,它被送入第三级目录,重命名就是读取前两段并重命名,将其粘贴到当前目录中。正如您所看到的,将会有大量年份目录。假设它们是空的,你可以用类似的东西清理(我祈祷你先检查它们是空的):
\n\nfind -maxdepth 1 -type d -regex \'\\./[0-9][0-9][0-9][0-9]\' -exec rm -irf "{}" \\;\nRun Code Online (Sandbox Code Playgroud)\n\n我正在使用 -i 选项强制它在删除每个文件之前询问您。删除它需要您自担风险。
\n