【发布时间】:2019-11-01 14:19:19
【问题描述】:
我在 yyyy-MM-dd/img.jpg 格式的文件夹中有一堆来自谷歌外卖的图像文件 - 我使用 phockup 来整理我的照片,它需要将照片放在 yyyy/mm/dd 文件夹中.我想保留日期,因为谷歌已经给了我。
例如 - 这个文件夹/图像应该匹配
/2018-07-01/test_img.jpg
并改名为
/2018/07/01/test_img.jpg
我尝试将 bash 与 sed 一起使用,并找到使用正则表达式捕获组来移动文件,但我似乎运气不佳。请参阅下文了解我目前的位置
find . -name "*.jpg" -print0 | sed 'p;s/([0-9]{4})\-([0-9]{2})\-([0-9]{2})\/(.*)/$2\/$3\/$4\/$5/' | xargs -0 -n2 mv
这是我遇到的错误
mv: 无法将 './2018-07-01/test_img.jpg' 移动到 ''$'\n''./2018-07-01/test_img.jpg': 没有这样的文件或目录
这似乎很奇怪,因为我认为正则表达式捕获组是正确的。我不确定为什么它不会重命名文件。
【问题讨论】:
-
sed基本正则表达式 不支持出现{n}。请改用sed -r。 -
sed -r 's/([0-9]{4})\-([0-9]{2})\-([0-9]{2})\/(.*)/\1\/\2\/\3\/\4/'