Como substituir espaços em branco em um nome de arquivo?

8

eu tentei da seguinte maneira:

rename 'bla bla .txt' blabla.txt

Mas isso não funciona, qual é a sintaxe correta para este caso?

    
por NES 25.12.2010 / 22:42

3 respostas

15

Você não deve usar rename para renomear apenas um arquivo, use mv (1) em vez disso.

Além disso, para escapar da whitepsace, prefixe-a com \ :

"Ubuntu One"Ubuntu\ One

Seu comando seria

mv bla\ bla.txt blabla.txt
  • a barra invertida informa ao bash que o próximo caractere é de alguma forma especial, por ex. \a para 'bell', \ para um espaço literal e assim por diante

    veja man ascii (7) para mais

Como alternativa, já que você está usando o comando mv , você pode citar o nome do arquivo se houver muitos espaços:

mv "bla    bla.txt" blabla.txt

(Isso seria bla\ \ \ \ bla.txt no formato de escape)

  • No bash, as strings entre aspas (aspas simples ou duplas) são tratadas como um único argumento, enquanto strings sem aspas serão divididas em vários argumentos, como este:

    • ["mv", "bla", "bla.txt", "blabla.txt", ]

    e mv esperam:

    • ["mv", "source", "destination", ]
  • Nota: digitar 'mv' e os primeiros caracteres do nome do arquivo e pressionar TAB lhe dará a versão com escape do nome do arquivo, tornando o renomear rápido e fácil.

rename é usado para processar em lote a renomeação de arquivos usando expressão regular, como demonstrado no exemplo de seu homem -página :

rename 's/\.bak$//' *.bak

Para remover qualquer ocorrência de .bak (no final da string [$]) de todos os arquivos correspondentes a "* .bak".

    
por Stefano Palazzo 25.12.2010 / 22:51
4

renomear é um comando especializado para renomeação em massa. Unintuitively, o que normalmente chamamos de "renomear" é na verdade um "movimento" para um novo nome:

mv 'bla bla .txt' blabla.txt
    
por ændrük 25.12.2010 / 22:52
0
rename "s/\s//g" "bla bla.txt"

s é o comando sed substituto.

\ s é para o whiteSpace

Você está substituindo por nada. Outra sequência de substituição é executada após a segunda barra.

g é para global, ou seja, substitua todas as instâncias. Omitir g substitui apenas a primeira instância.

Este comando substituirá o espaço em branco com sublinhado em todos os arquivos:

rename "s/\s/_/g" *
    
por Nissim Kaufmann 26.08.2016 / 00:24