У меня есть папка с файлами 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 loops и тестировал его с 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
как только убедитесь, что он работает правильно.