重命名所有目录,反转由连字符分隔的日期字符串名称

重命名所有目录,反转由连字符分隔的日期字符串名称

我有名为日期的子目录,例如09 January 2020.我使用终端命令重命名了所有目录,以用连字符替换空格:

$ for i in *; do mv "$i" "`echo $i | sed -e 's, ,-,g'`"; done

现在我得到名为 的子目录09-January-2020
我想反转日期顺序并获取名为 的子目录2020-January-09。我想使用与上面相同的 for 循环但不同的 sed 命令来反转子目录名称中日期格式的顺序。

答案1

用于sed为目录创建新名称:

for d in *; do
    echo mv -- "$d" "$(echo "$d" | sed -E 's/(.*)-(.*)-(.*)/\3-\2-\1/')"
done

括号内的匹配部件将以相反的顺序重新用于替换。echo测试后删除第一个。

相关内容