Espeace dans nom de fichier

mystere689 -  
mystere689_tahiti Messages postés 6 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'ai des fichiers avec des nom d'espace dedans. Dans les script sh, la plupart de mes commandes ne reconnaisse pas par exemple "mes documents". Ce nom est interprété comme "mes".

en ligne de commande, un simple exemple :
TOTO="/tmp/mirroir/user/mes documents"
mkdir -p $TOTO

Cela me crée le répertoire /tmp/mirroir/mes

Comment faire pour que les nom soient pris en compte ????? Un bash de 2 ligne est ca fct pas, je rage

Merci de votre aide,

PS :Ne me dit pas de ne pas utiliser l'espace, car les dossier à récuérer sont dans le profile SAMBA de l'utilisateur qui est stocker sur l'ordi et c'est pas moi qui crée ces noms.
A voir également:

5 réponses

Franzux Messages postés 8907 Date d'inscription   Statut Contributeur Dernière intervention   1 145
 
Il suffit d'échapper le caractère qui pose problème (espace) avec un anti-slash.

Donc au lieu de "mes documents", tu dois écrire "mes\ documents", tout simplement ;)

Cordialement.
0
jivef Messages postés 927 Date d'inscription   Statut Membre Dernière intervention   306
 
Salut,
Tu peux vérifier le contenu de la variable $TOTO en faisant un echo de celle-ci.

En fait, avec un caractère d'échappement cela ne suffit pas.

Voici ce qu'il faut faire :
1 - définiti $TOTO
TOTO="Path\to\Mes Documents"
echo $TOTO (pour vérifier)


ensuite lorsque tu fais le mkdir -p il faut encadrer $TOTO par ""

mkdir -p "$TOTO"

Voici en gros ce que ça donne :

jonas@LENOVO ~/home$ TOTO="rep5/Test dossier

jonas@LENOVO ~/home$ echo $TOTO
rep5/Test dossier

jonas@LENOVO ~/home$ mkdir -p "$TOTO"

jonas@LENOVO ~/home$ ls rep5
Test dossier

jonas@LENOVO ~/home$

Bon courage à toi.
Jonas.
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Salut,

Il suffit de double-quoter la variable :
[tmpfs]$ ls
Mes Documents/
[tmpfs]$ var=$(ls)
[tmpfs]$ echo $var
Mes Documents/
[tmpfs]$ rm -rf $var
[tmpfs]$ ls
Mes Documents/
[tmpfs]$ rm -rf "$var"
[tmpfs]$ ls
[tmpfs]$   
;-))
0
mystere689_tahiti Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
 
Merci à tous de vos réponses. effectivement avec le post de jipicy cela fonctionne en ligne de commande, mais j'ai du mal à l'intégrer dans mon batch. en fait le probleme est le suivant; crée un double de l'arboresence de /samba/probile/<utilisateur> mais en ne prennant que le dossier Bureau et "Mes documents" (le fameux dossier qui m'embete).

voila la partie du scripte qui devait réalisé cela :
#!/bin/sh
#LISTE=$(find "/tmp/mirroir/2009-05-12/files/samba/profiles" \( -iname Bureau -or -iname 'Mes Documents' \) -type d | sed -e "s/Mes\ documents/\"Mes_documents\"/")
#echo $LISTE
for file in $(find "/tmp/mirroir/2009-05-12/files/samba/profiles" \( -iname Bureau -or -iname 'Mes Documents' \) -type d | sed -e "s/Mes\ documents/Mes_documents/") #$(find "/tmp/mirroir/2009-05-12/files/samba/profiles" \( -iname Bureau -or -iname 'Mes Documents' \)
do
FICHIER_SOURCE=$file
FICHIER_DEST=$(echo "\"$file\"" | sed -e "s/samba/samba2/;s/Mes_documents/Mes documents/")
echo "$FICHIER_DEST"
mkdir -p $FICHIER_DEST
#cp -rf -reply=yes $FICHIER_SOURCE $FICHIER_DEST/.. >>/tmp/rsync_script_tmpfile
done


cela me donne en sortie console (grace à "echo") :
"/tmp/mirroir/2009-05-12/files/samba2/profiles/teinab/Bureau"
"/tmp/mirroir/2009-05-12/files/samba2/profiles/reat/Mes documents"
"/tmp/mirroir/2009-05-12/files/samba2/profiles/jaryt/Mes documents"
"/tmp/mirroir/2009-05-12/files/samba2/profiles/maretat/Bureau"

mais aucun répertoire de se crée. Comment faire ????
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mystere689_tahiti Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
 
finalement ceci à l'air de répondre à mon problème :

#!/bin/sh
# on enleve l'epace car c'est le séparateur pour for dans une liste
for file in $(find "/tmp/mirroir/2009-05-12/files/samba/profiles" \( -iname Bureau -or -iname 'Mes Documents' \) -type d | sed -e "s/Mes\ documents/Mes_documents/")
do
FICHIER_SOURCE=$file
# on remet l'espace
FICHIER_DEST=$(echo "$file" | sed -e "s/samba/samba2/;s/Mes_documents/Mes documents/")
echo $FICHIER_DEST
mkdir -p "$FICHIER_DEST" # merci jypicy
#cp -rf -reply=yes $FICHIER_SOURCE $FICHIER_DEST/.. >>/tmp/rsync_script_tmpfile # pas testé encore
done
0