Estou procurando uma maneira fácil de renomear muitos arquivos no meu Synology NAS. encontrar e sed
estão disponíveis, mas não rename
.
Eu posso obter uma lista desses arquivos e pastas com
find . \( -type d -name "@*" -prune \) -o \( -name "**" \) -print
A instrução find acima exibe todos os arquivos contendo um caractere "/", em Synology bash substituído por "".
Todos os caracteres especiais que preciso substituir são:
/ \ : ? ' ’ ´ ’
Dependendo da plataforma e do protocolo de compartilhamento de arquivos usado, esses caracteres terão uma aparência diferente, serão exibidos de maneira diferente ou não serão exibidos ou causarão diferentes tipos de problemas. Eu posso encontrar esses personagens dentro do Synology bash com:
-name "**" -o -name '*\\*' -o -name "*:*" -o -name "*\?*" -o -name "*\'*" -o -name "*´*" -o -name "*`*"
Como posso substituir esses caracteres em cada um dos arquivos e diretórios encontrados? Vou começar com o caractere "/".
Muito obrigado por qualquer ajuda!
Gary
Supondo que o
find
comando corresponda ao conjunto exato de arquivos que você deseja renomear e que deseja renomear para nomes de arquivo "seguros". Sem saber o caractere preciso que você tem em seus nomes de arquivos, só posso oferecer sugestões, mas aqui estão duas.Remova o caractere estranho. Isso pressupõe que o caractere pode ser tratado nativamente por
bash
substituiçõesMantenha apenas caracteres conhecidos. Certifique-se de que
tr
possui o conjunto de caracteres que deseja manter.Em ambos os casos, remova
echo
para converter a depuração em uma instrução ativa.Aqui está uma alternativa usando um loop for:
Nota: antes de executar os comandos de mover/remover é uma boa ideia fazer um backup primeiro.
Se o seu comando find fornecer o resultado desejado, você pode canalizá-lo para o sed e depois do sed para o bash (ou redirecionar para o arquivo em vez do canal para o bash/ash):
Ou você pode redirecionar o sed para o arquivo e bash/ash esse arquivo (bash list_of_files_and_dirs_to_be_renamed). Teste bem em arquivos/diretórios não importantes antes de usá-lo em dados reais.