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

0

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

title: Some kind of title

Eu preciso de algum tipo de script que possa passar por esses arquivos, pegar o título e colocá-lo como o nome do arquivo. A estrutura da pasta é: 1-links / 20150528/1 / so seria ótimo se eu pudesse apenas executar o script em "1-links" e ele iria começar a procurar por arquivos com o nome "link.txt".

Estou usando o Mac OSX.

Alguém pode me ajudar?

    
por Lauri 28.05.2015 / 08:29

1 resposta

1

Algo parecido 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, poderá 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
    
por 28.05.2015 / 09:14