Lo intenté de la siguiente manera:
rename 'bla bla .txt' blabla.txt
Pero esto no funciona, ¿cuál es la sintaxis correcta para este caso?
fuente
Lo intenté de la siguiente manera:
rename 'bla bla .txt' blabla.txt
Pero esto no funciona, ¿cuál es la sintaxis correcta para este caso?
No debería usar rename
para cambiar el nombre de un solo archivo, use mv
(1) en su lugar.
Además, para escapar de whitepsace, prefije con un \
:
"Ubuntu One"
→ Ubuntu\ One
Tu comando sería
mv bla\ bla.txt blabla.txt
la barra diagonal inversa le dice a bash que el siguiente personaje es de alguna manera especial, por ejemplo, \a
para 'campana', \
para un espacio literal, etc.
ver man ascii
(7) para más
Alternativamente, dado que ahora está utilizando el comando correcto mv
, puede citar el nombre de archivo si hay muchos espacios:
mv "bla bla.txt" blabla.txt
(Esto sería bla\ \ \ \ bla.txt
en forma de escape)
En bash, las cadenas entre comillas (comillas simples o dobles) se tratan como un argumento único, mientras que las cadenas sin comillas se dividirán en varios argumentos, como este:
["mv", "bla", "bla.txt", "blabla.txt", ]
y mv
espera:
["mv", "source", "destination", ]
Nota: si escribe 'mv' y los primeros caracteres del nombre de archivo y presiona TAB, obtendrá la versión de escape del nombre del archivo, lo que hará que el cambio de nombre sea rápido y fácil.
rename
se usa para procesar por lotes el cambio de nombre de los archivos utilizando expresiones regulares, como se demuestra en el ejemplo de su página de manual :
rename 's/\.bak$//' *.bak
Para eliminar cualquier aparición de .bak (al final de la cadena [$]) de todos los archivos que coinciden con "* .bak".
rename es un comando especializado para renombrar en masa. Sin intuición, lo que normalmente llamamos "cambio de nombre" es en realidad un "movimiento" a un nuevo nombre:
fuente
A=bla ; mv "$A $A .txt" blabla.txt
moverá bla bla .txt, peroA=bla ; mv '$A $A .txt' blabla.txt
buscará un archivo realmente llamado "$ A $ A .txt". Sin embargo, cualquiera funcionará para su ejemplo.s es el comando sed Substitute.
\ s es para whiteSpace
Estás reemplazando con nada. Otra secuencia de reemplazo va después de la segunda barra diagonal.
g es para Global, es decir, reemplazar cada instancia. Omitir g reemplaza solo la primera instancia.
Este comando reemplazará los espacios en blanco con guiones bajos en todos los archivos:
fuente