Переименуйте папку файлов на основе содержания файла

У меня есть папка файлов скидки с цены - я должен обработать в пакетном режиме, переименовывают ФАЙЛЫ. Я должен предварительно ожидать дату, и дата в файле в этом формате:

----
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 + файлы в этой папке. Я попробовал удар за циклы и протестировал его с mv и эхом. До сих пор в цикле awk переменная никогда не изменяет, просто использует поле из самого первого файла. Таким образом, я определенно нуждаюсь в помощи.

1
задан 13 June 2018 в 06:21

1 ответ

Вероятно, не очень эффективный, но как насчет

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

Удалите echo после того как Вы удовлетворены, что это делает правильную вещь.

1
ответ дан 11 November 2019 в 01:03

Другие вопросы по тегам:

Похожие вопросы: