根据文件内容重命名文件夹

根据文件内容重命名文件夹

我有一个 Markdown 文件夹 - 我需要批量重命名这些文件。我需要在前面添加一个日期,日期在文件中的格式如下:

----
Title: Title-of-blog-article
Date: 2012-03-07

我设法找到了一种使用 awk 获取日期的方法。我似乎找不到合适的魔法来从 awk 中获取该日期并用它来重命名文件。预期的命名方案:

OLD FILE
Title-of-blog-article.md

NEW FILE
2012-03-07-Title-of-blog-article.md

此文件夹中有 150 多个文件。我尝试了 bash for 循环,并使用 mv 和 echo 对其进行了测试。到目前为止,循环中的 awk 变量从未改变,只是使用第一个文件中的字段。所以我肯定需要帮助。

答案1

可能效率不高,但如何

for f in *; do 
  d=$(awk '/^Date:/ {print $2; exit}' "$f")
  [[ -n "$d" ]] && echo mv --no-clobber -- "$f" "${d}-${f}"
done

echo一旦您确信它正在做正确的事情,就将其删除。

相关内容