Remoção em lote de caracteres especiais dos nomes de arquivos no Linux

5

Eu estou tentando remover todos os caracteres especiais do download de vários arquivos .pdfs, e encontrei exatamente a solução que estava procurando, ainda que em um ambiente OS X:

função para remover automaticamente caracteres especiais de nomes de arquivos durante o salvamento no MacOS X .

Poderia um método semelhante - usando sed ou alguma outra função - ser implementado em um ambiente Linux?

    
por nitrl 12.07.2013 / 06:36

3 respostas

11

Você pode fazer isso com o comando rename . Se você estiver na pasta com os arquivos .pdf com caracteres especiais:

rename 's/[^a-zA-Z0-9]//g' *.pdf

Isso removerá todos os caracteres dos arquivos terminados em .pdf que não sejam A-Z em nenhum caso ou números. Você pode adicionar a esta lista:

rename 's/[^a-zA-Z0-9_]//g' *.pdf

Esta versão permite sublinhados.

    
por 12.07.2013 / 08:55
4

Para lidar com todo o nome do arquivo e também com vários arquivos:

  • Adicione /g para manipular todo o nome do arquivo.
  • Adicione _ para substituir por sublinhado (se necessário)
  • Adicione "tipos" adicionais de arquivos ou nomes de arquivos individuais no final, separados por espaços.

rename 's/[^a-zA-Z0-9_.]/_/g' *mp4 *avi

    
por 30.10.2015 / 12:30
-2

para arquivo em *; do mv "$ arquivo" $ (echo "$ arquivo" | sed -e 's / [^ A-Za-z0-9. -] / / g'); feito &

    
por 04.07.2017 / 23:55