6 votos

¿Cómo renombrar un archivo que contiene espacios en el terminal?

Tengo un archivo con el nombre:

this is my app.ipa

Me gustaría cambiar el nombre de este archivo:

mv $(path)/this is my app.ipa $(path)/this_is_my_app.ipa 

No parece correcto... Gracias de antemano.

15voto

David Anderson Puntos 2189

Aunque podría preceder cada espacio con un \ sería mejor encerrar todo el nombre del archivo con un par de comillas dobles "" como se muestra a continuación. Aquí asumo path es una variable, que también puede contener espacios.

mv "$path/this is my app.ipa" "$path/this_is_my_app.ipa"

O, supongo que también podría utilizar lo siguiente.

mv "$path"/this\ is\ my\ app.ipa "$path"/this_is_my_app.ipa

Si path es ejecutable con salida, entonces es correcto utilizar $(path) .

15voto

iacoware Puntos 106

Otros respuestas explicar las distintas formas de entrecomillar o escapar de los espacios. Pero como otra opción, el tabulador es tu amigo aquí y siempre que tenga nombres de archivos que sean difíciles de escribir, ya sea debido a caracteres que necesiten escaparse, a caracteres acentuados o inusuales, o simplemente a su longitud.

En concreto, si empiezas a escribir el comando y el nombre del archivo actual:

   mv $(path)/thi

y a continuación pulse tab su shell debería completar automáticamente el nombre de archivo escapado:

   mv $(path)/this\ is\ my\ app.ipa

después de lo cual puede continuar escribiendo el comando. (Si tiene varios archivos cuyos nombres comienzan de la misma manera, la función de completar el tabulador debería completar el nombre hasta el primer carácter ambiguo).

6voto

Ezekiel Elin Puntos 241

Tienes que escapar de los espacios:

mv $(path)/this\ is\ my\ app.ipa $(path)/this_is_my_app.ipa

o utilizar comillas:

mv "$(path)/this is my app.ipa" $(path)/this_is_my_app.ipa

5voto

yoliho Puntos 340

Depende de la cáscara.

La mayoría se encierran entre comillas - ya sea " o ' - tienen diferentes efectos en la expansión de las variables de entorno. Los shells POSIX no expanden ~ así que

mv "$(path)/this is my app.ipa" $(path)/this_is_my_app.ipa 

Los shells POSIX también permiten escapar de los caracteres utilizando \N el

mv $(path)/this\ is\ my\ app.ipa $(path)/this_is_my_app.ipa 

Además, si sólo hay un archivo con un nombre similar, utilice comodines por ejemplo

mv $(path)/this*.ipa $(path)/this_is_my_app.ipa 

o

mv $(path)/this?is?my?app.ipa $(path)/this_is_my_app.ipa

0voto

wch1zpink Puntos 11

Este es un enfoque un poco diferente que puede ser útil para usted.

Este código siguiente renombrará el archivo "esta es mi app.ipa", en el directorio de trabajo actual, a este "esta_es_mi_app.ipa"

for f in ./"this is my app.ipa" ;do echo "$f" |mv "$f" "$(sed 's@ @_@g')" ;done

La siguiente versión renombrará todos los archivos, en el directorio de trabajo actual, que terminen en ".ipa" y que también contengan espacios en el nombre... sustituyendo los espacios en blanco por guiones bajos.

for f in ./*.ipa ;do echo "$f" |mv "$f" "$(sed 's@ @_@g')" ;done

La siguiente versión renombrará todos los archivos, en el directorio de trabajo actual, que contengan espacios en el nombre... sustituyendo los espacios en blanco por guiones bajos.

for f in ./* ;do echo "$f" |mv "$f" "$(sed 's@ @_@g')" ;done

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X