renomeia (reverso) diretórios unix com o sobrenome e o primeiro nome separados por vírgulas

1

Eu tenho um diretório com mais de 1.000 pastas no meu Mac. Cada pasta é o sobrenome de uma pessoa e, em seguida, o primeiro nome é separado por uma vírgula. Por exemplo - Smith, John.

Eu quero renomear todos os diretórios com um script de shell para Smith, John se torna John Smith

Esses diretórios serão ingeridos em um sistema de DAM que levará nomes de pastas e transformará todos os itens do diretório em palavras-chave. Do jeito que estão agora, Smith, John marcará cada arquivo com os nomes "smith" e "John" como palavras-chave separadas. Se eu puder renomear todos os arquivos para "nome sobrenome" sem uma vírgula, todos os arquivos sob ele poderão ser marcados automaticamente com o nome da pessoa como uma palavra-chave no DAM.

Obrigado por qualquer ideia!

    
por user2031240 13.06.2018 / 20:14

3 respostas

1

Se você tiver o rename escrito por Larry Wall, poderá usá-lo. É o sed para nomes de arquivos. Tenha cuidado, alguns sistemas possuem uma ferramenta diferente com o nome rename .

rename -n -e 's/([^,]+), ([^,]+)/$2 $1/' «list_of_files»

Substitua «list_of_files» , por ex. com * . Uma vez testado, remova o -n .

    
por 13.06.2018 / 20:32
1

A versão em Perl do utilitário rename pode fazer isso:

rename 's/(.+), (.+)/$2 $1/' *

NOTE : faça um backup da árvore de diretórios antes de executar este  comando. Deve funcionar, mas você não deu muitos detalhes sobre os nomes dos seus diretórios.

    
por 13.06.2018 / 20:33
0
$ find .  -type d -maxdepth 1 -exec basename "{}" \; | grep -v '^.$' | awk -F", " '{ print "mv \""$0"\" \"" $2, $1"\""  }' | tee rename.sh
mv "Doe, Jon" "Jon Doe"
mv "Smith, Bob" "Bob Smith"
mv "Roe, Jane" "Jane Roe"

Você pode então chmod u+x rename.sh e executá-lo depois de fornecer a saída de tee uma vez.

    
por 13.06.2018 / 20:33