Renomear ficheiros de texto de acordo com conteúdo em UNIX
A meio de outro projecto surgiu a tarefa: renomear mais de 500 ficheiros de texto - no caso produzidos pelo BeautifulSoup - de forma a que o nome de cada ficheiro reflita o conteúdo - neste caso um número ordenado.
Em primeiro lugar, o formato do ficheiro (no caso não de texto mas sim com conteúdo YML)
Pretende-se renomear todos os ficheiros de acordo com a lógica 12345.txt -> b.txt
Script oneliner (sed e cut):
ou a versão em script:
A receita funciona independentemente do número de ficheiros envolvidos.
Exercício parecido: tenho 2 ficheiros com o mesmo nome mas extensões diferente: uma foto e um ficheiro .txt com informações sobre a foto. Pretendo renomear o ficheiro .webp de acordo com o conteúdo de uma determinada linha do ficheiro .TXT
Oneliner:
_d=”$(sed -n 3p “$f” | cut -d’”’ -f 4).webp”_ cria o nome do ficheiro final a partir do texto do primeiro ficheiro; |
mv ${f%.*}.webp “$d” a única dificuldade do scrip; a expressão ${f%.*}.webp pega no ficheiro original e substitui a extensão pela extensão que quero renomear.
Podia ter feito isto manualmente? Não…