交换文件名中的第一个和最后四个字符

时间:2017-06-13 21:11:51

标签: bash command-line markdown filenames

的StackOverflow。

我收集了一些工作笔记。我将它们保存为markdown文件,并将其格式化为日期和年份 - 例如,今天的标题为06132017.md

我正在工作一年,所以我有很多这样的文件。我希望将命名约定从第一个月/第一年改为第一年,这样我就可以按字母顺序对它们进行排序,并轻松找到我需要的日期。

所以06132017.md将成为20170613.md - 这将使2016年和2017年不再按照aplha顺序混合。我可以在文件夹上运行命令吗?

1 个答案:

答案 0 :(得分:1)

如果您有Perl重命名实用程序,则执行起来相当简单:

$ prename 's/^(....)(....)(\.md)$/$2$1$3/' *.md 
06132017.md renamed as 20170613.md

点匹配任何字符,括号组和替换侧的$N插入组中捕获的字符。

或者只是在Bash:

$ for x in ????????.md ; do mv -v "$x" "${x:4:4}${x:0:4}.md" ; done
'06132017.md' -> '20170613.md'

${var:n:m}从变量m的位置n开始,获取长度为var的子字符串。