CLI: renomear arquivo em lote - com CONTENT ?? (por exemplo, texto específico mencionado no arquivo)

2

Eu gostaria de renomear arquivos em lote (* .txt) inserindo um número do formato 'RXR1234567' (RXR + 7 dígitos) [se tal número (e idealmente apenas um) for encontrado no texto] na frente de o nome do arquivo, por exemplo em vez de

letter_235.txt

o arquivo deve ser chamado

RXR1234567_letter_235.txt

Isso pode ser feito a partir da linha de comando (grep, rename)? Os arquivos estão em vários subdiretórios.

Seus pensamentos serão apreciados (como sempre).

    
por ajo 02.10.2010 / 23:00

1 resposta

1

Tente isso no diretório raiz:

find -name '*.txt' -exec sh -c 'PREFIX='grep -m 1 -oe "RXR[0-9]\{7\}" "$0"' && mv "$0" "${0%/*}/${PREFIX}_${0##*/}"' {} \;

Observação: se um arquivo contiver várias correspondências do padrão, o primeiro será usado.

    
por 02.10.2010 / 23:26