Usando sed para renomear arquivos em massa
Objetivo
Altere estes nomes de arquivos:
F00001-0708-RG-biasliuydaF00001-0708-CS-akgdlaulF00001-0708-VF-hioulgiglpara esses nomes de arquivos:
F0001-0708-RG-biasliuydaF0001-0708-CS-akgdlaulF0001-0708-VF-hioulgiglCódigo Shell
Testar:
ls F00001-0708-*|sed 's/\(.\).\(.*\)/mv & \1\2/'
Executar:
ls F00001-0708-*|sed 's/\(.\).\(.*\)/mv & \1\2/' | sh
Minha pergunta
Eu não entendo o código sed. Eu entendo o que o comando de substituição
$ sed 's/something/mv'
significa. E eu entendo um pouco expressões regulares. Mas não entendo o que está acontecendo aqui:
\(.\).\(.*\)
ou aqui:
& \1\2/
O primeiro, para mim, parece que significa: "um único caractere, seguido por um único caractere, seguido de qualquer sequência de comprimento de um único caractere" - mas certamente há mais do que isso. Quanto à última parte:
& \1\2/
Eu não faço ideia. Eu realmente quero entender esse código. Por favor me ajudem aqui, pessoal.