Vou descrever o problema bastante detalhado, já que aprendi que apenas falar sobre um subproblema específico que identifiquei leva a faltar a oportunidades ... Então, vou colocar um ponto inicial: Existe um conjunto de pastas que precisam ser renomeadas de acordo com um mapeamento em um arquivo CSV.
Os nomes das pastas seguem o seguinte padrão:
[[:alpha:]]*[[:digit:]]*_[[:alnum:]]*
Os dígitos no meio são relevantes e especificam o novo nome que a pasta deve ter. Então eu poderia executar o seguinte comando sed para extrair a parte do nome da pasta que me interessa.
sed 's/[[:alpha:]]*\([[:digit:]]*\)_[[:alnum:]]*//'
Portanto, podemos ter uma pasta chamada deptA100257_2bfde391c6af30fde3fca94b07bc8e7c
e retirar o ID relevante 100257
. Depois, preciso renomear a pasta de acordo com o seguinte CSV:
63;9961
63;100257
O novo nome está à esquerda, o ID do nome antigo à direita. Portanto, a pasta do exemplo acima deve ser renomeada para 63
.
Primeiro problema óbvio: vários IDs podem mapear para um único nome. Eu resolveria isso criando todas as pastas "novas" na frente e copiando o conteúdo da pasta.
E eu poderia hackear isso usando Python ou qualquer outra coisa, possivelmente até mesmo alguns loops bash. Mas algo me diz que no núcleo, esta operação (substituição de acordo com um arquivo) não é exatamente incomum. Então, antes de reinventar a roda ...
Eu prefiro soluções usando shells e ferramentas * NIX padrão (especialmente bash ou zsh) e nenhuma linguagem "externa" como Perl, Ruby, Python ... Mas no final estou mais ou menos procurando uma abordagem "inteligente" e se houver uma boa linha Ruby que faça o trabalho, estou bem com isso.