Espeace dans nom de fichier

Fermé
mystere689 - 14 mai 2009 à 21:47
mystere689_tahiti Messages postés 6 Date d'inscription jeudi 14 mai 2009 Statut Membre Dernière intervention 19 mai 2009 - 15 mai 2009 à 02:00
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 mercredi 5 décembre 2007 Statut Contributeur Dernière intervention 27 octobre 2015 1 145
14 mai 2009 à 21:54
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 mercredi 11 août 2004 Statut Membre Dernière intervention 12 novembre 2020 306
14 mai 2009 à 23:35
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 jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
14 mai 2009 à 23:42
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 jeudi 14 mai 2009 Statut Membre Dernière intervention 19 mai 2009
15 mai 2009 à 01:49
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 jeudi 14 mai 2009 Statut Membre Dernière intervention 19 mai 2009
15 mai 2009 à 02:00
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