Cambiar el nombre de los archivos txt según el contenido del archivo (OSX)

Cambiar el nombre de los archivos txt según el contenido del archivo (OSX)

Tengo alrededor de 250 archivos txt que se llaman link.txt y siempre tienen esta información en la línea/fila 3:

título: algún tipo de título

Necesito algún tipo de script que pueda revisar estos archivos, tomar el título y ponerlo como nombre de archivo. La estructura de carpetas es: 1-links/20150528/1/, así que sería genial si pudiera ejecutar el script en "1-links" y comenzaría a buscar archivos llamados "link.txt".

Estoy usando Mac OSX.

¿Puede alguien ayudarme?

Respuesta1

Algo como puede hacer el trabajo:

for i in `find . -name link.txt -type f`;
do
nn=$(sed -n -e 3p -e "s/title:\ // "$i")
mv "$i" "`dirname $i`/$nn"
done

Si desea cambiar el nombre del último directorio en la ruta en lugar del archivo, puede usar algo como:

for i in `find . -name link.txt -type f`;
do
nn=$(sed  -n -e 's/title: //'  -e 3p $i)
odir=`dirname $i`
ndir=$(echo $odir|awk -v nn="$nn" -F\/ 'BEGIN {OFS="/"}  {$NF=nn;print}')
mv  "$odir" "$ndir"
done

información relacionada