Problema
Eu tenho milhares de pastas, cujos nomes são estruturados como:
firstName_lastName_date
para as quais quero trocar as duas primeiras partes usando o sublinhado _
como separador para terminar com:
lastName_firstName_date
Aviso
lastName
pode ser precedido por uma partícula nobre , separada por um extra _
nas pastas de entrada.
Por exemplo:
firstName_de_lastName_date
firstName_von_lastName_date
Para o qual a saída desejada deve ser:
de_lastName_firstName_date
von_lastName_firstName_date
Em formação
date
é sempre o último elemento.- Os primeiros nomes são palavras únicas.
- Sobrenomes são palavras simples ou palavras compostas (2) com uma partícula.
Ferramentas
Eu quero fazer isso usando rename
bash, de preferência, ou shell Parameter expansion .
Referências
https://www.gnu.org/software/sed/manual/html_node/Regular-Expressions.html
Você pode fazer isso usando o baseado em Perl,
rename
eu acho, usando uma mistura de correspondências não gananciosas e gananciosas ex.O modificador não ganancioso no último
date
grupo ( ) não é realmente necessário - mas eu gosto da simetria.Alternativamente, com o shell sozinho