Eu tentei da seguinte maneira:
rename 'bla bla .txt' blabla.txt
Mas isso não funciona, qual é a sintaxe correta para este caso?
fonte
Eu tentei da seguinte maneira:
rename 'bla bla .txt' blabla.txt
Mas isso não funciona, qual é a sintaxe correta para este caso?
Você não deve usar rename
para renomear apenas um arquivo, use mv
(1) .
Além disso, para escapar do espaço em branco, prefixe-o com um \
:
"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 exemplo, \a
para 'bell', \
para um espaço literal e assim por diante
veja man ascii
(7) para mais
Como alternativa, como agora você está usando o comando correto mv
, pode citar o nome do arquivo se houver muitos espaços:
mv "bla bla.txt" blabla.txt
(Isso seria bla\ \ \ \ bla.txt
em forma de escape)
No bash, as seqüências de caracteres entre aspas (aspas simples ou duplas) são tratadas como um único argumento, enquanto as seqüências de caracteres sem aspas serão divididas em vários argumentos, como este:
["mv", "bla", "bla.txt", "blabla.txt", ]
e mv
espera:
["mv", "source", "destination", ]
Nota: digitar 'mv' e os primeiros caracteres do nome do arquivo e pressionar TABdará a versão escapada do nome do arquivo, tornando a renomeação rápida e fácil.
rename
é usado para processar em lote a renomeação de arquivos usando expressão regular, conforme demonstrado no exemplo em sua página de manual :
rename 's/\.bak$//' *.bak
Para remover qualquer ocorrência de .bak (no final da string [$]) de todos os arquivos correspondentes a "* .bak".
renomear é um comando especializado para renomear em massa. Sem querer, o que normalmente chamamos de "renomear" é na verdade uma "mudança" para um novo nome:
fonte
A=bla ; mv "$A $A .txt" blabla.txt
moverá bla bla .txt, masA=bla ; mv '$A $A .txt' blabla.txt
procurará um arquivo chamado "$ A $ A .txt". Qualquer um deles funcionará para o seu exemplo.s é o comando substit substit.
\ s é para whiteSpace
Você está substituindo por nada. A outra seqüência de substituição passa depois da segunda barra.
g é para Global, ou seja, substitua todas as instâncias. A omissão de g substitui apenas a primeira instância.
Este comando substituirá o espaço em branco pelo sublinhado em todos os arquivos:
fonte