Cambiar el nombre de la carpeta de archivos según el contenido del archivo

Cambiar el nombre de la carpeta de archivos según el contenido del archivo

Tengo una carpeta de archivos de rebajas; necesito cambiar el nombre de LOS ARCHIVOS por lotes. Necesito anteponer una fecha, y la fecha está dentro del archivo en este formato:

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

Me las arreglé para encontrar una manera de obtener la fecha usando awk. Parece que no puedo encontrar la magia adecuada para luego tomar esa fecha de awk y cambiar el nombre del archivo con ella. Esquema de nomenclatura previsto:

OLD FILE
Title-of-blog-article.md

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

Hay más de 150 archivos en esta carpeta. Probé bash for loops y lo probé con mv y echo. Hasta ahora en el bucle, la variable awk nunca cambia, solo usa el campo del primer archivo. Entonces definitivamente necesito ayuda.

Respuesta1

Probablemente no sea muy eficiente, pero ¿qué tal

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

Quítelo echouna vez que esté satisfecho de que está haciendo lo correcto.

información relacionada