Renomeie arquivos txt com base no conteúdo do arquivo (OSX)

Renomeie arquivos txt com base no conteúdo do arquivo (OSX)

Tenho cerca de 250 arquivos txt todos nomeados link.txt e eles têm essa informação sempre na linha/linha 3:

título: Algum tipo de título

Preciso de algum tipo de script que possa percorrer esses arquivos, pegar o título e colocá-lo como nome do arquivo. A estrutura da pasta é: 1-links/20150528/1/ então seria ótimo se eu pudesse executar o script em "1-links" e ele começaria a procurar por arquivos chamados "link.txt".

Estou usando o Mac OSX.

Alguém pode me ajudar?

Responder1

Algo como pode fazer o trabalho:

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

Se você quiser renomear o último diretório no caminho em vez do arquivo, você pode 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

informação relacionada