Renomeie a pasta de arquivos com base no conteúdo do arquivo

Renomeie a pasta de arquivos com base no conteúdo do arquivo

Eu tenho uma pasta de arquivos markdown - preciso renomear OS ARQUIVOS em lote. Preciso acrescentar uma data, e a data está dentro do arquivo neste formato:

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

Consegui encontrar uma maneira de pegar a data usando o awk. Não consigo encontrar a mágica certa para pegar essa data do awk e renomear o arquivo com ela. Esquema de nomenclatura pretendido:

OLD FILE
Title-of-blog-article.md

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

Existem mais de 150 arquivos nesta pasta. Eu tentei bash for loops e testei com mv e echo. Até agora no loop a variável awk nunca muda, apenas usa o campo do primeiro arquivo. Então eu definitivamente preciso de ajuda.

Responder1

Provavelmente não é muito eficiente, mas que tal

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

Remova o echoquando estiver satisfeito com o fato de que ele está fazendo a coisa certa.

informação relacionada