6 votes

Comment renommer un fichier qui contient des espaces dans le terminal ?

J'ai un fichier avec le nom :

this is my app.ipa

Je voudrais renommer ce fichier :

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

Cela ne semble pas correct... Merci d'avance.

15voto

David Anderson Points 30783

Alors que vous pourriez faire précéder chaque espace d'un \ il est préférable d'entourer le nom de fichier entier d'une paire de guillemets doubles "" comme indiqué ci-dessous. Ici, je suppose que path est une variable, qui peut également contenir des espaces.

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

Ou bien, vous pourriez aussi utiliser ce qui suit.

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

Si path est exécutable avec sortie, alors vous avez raison d'utiliser $(path) .

15voto

iacoware Points 106

Autre réponses expliquer les différentes manières d'enquêter ou d'échapper aux espaces. Mais comme autre option, La complétion par tabulation est votre ami ici et à chaque fois que vous avez des noms de fichiers difficiles à taper, que ce soit en raison de caractères devant être échappés, de caractères accentués ou inhabituels, ou simplement de leur longueur.

Plus précisément, si vous commencez à taper la commande et le nom du fichier courant :

   mv $(path)/thi

puis appuyez sur tab votre shell devrait automatiquement compléter le nom de fichier échappé :

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

après quoi vous pouvez continuer à taper la commande. (Si vous avez plusieurs fichiers dont les noms commencent de la même façon, la complétion par tabulation devrait compléter le nom jusqu'au premier caractère ambigu).

6voto

Ezekiel Points 4001

Vous devez soit vous échapper des espaces :

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

ou utilisez des guillemets :

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

5voto

yoliho Points 340

Cela dépend du shell.

La plupart sont entourés de guillemets - soit " ou ' - ils ont des effets différents dans l'expansion des variables d'environnement. Les shells POSIX ne développent pas ~ donc

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

Les shells POSIX permettent également l'échappement des caractères à l'aide de \\_.

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

De même, s'il n'y a qu'un seul fichier avec un nom similaire, utilisez des caractères de remplacement. par exemple

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

ou

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

0voto

wch1zpink Points 6067

Voici une approche un peu différente qui peut vous être utile.

Le code suivant renommera le fichier "ceci est mon application.ipa", dans le répertoire de travail actuel, en "ceci_est_mon_app.ipa".

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

La version suivante renommera tous les fichiers, dans le répertoire de travail actuel, se terminant par ".ipa" qui contiennent également des espaces dans le nom... en remplaçant les espaces vides par des traits de soulignement.

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

La version suivante renommera tous les fichiers, dans le répertoire de travail actuel, qui contiennent des espaces dans le nom... en remplaçant les espaces vides par des caractères de soulignement.

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

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X