#1 Le 19/02/2013, à 17:29
- wolf85kunst
commande find et l'utisation d'une variable
Bonjour à tous,
Je rencontre un souci avec la commande find et l'utilisation d'une variable . Je m'explique : j'aimerai renseigner mes divers chemins de recherche dans une variable.
J'ai essayé ceci :
search_path='/home/user1 /home/user2'
find `echo "$search_path"` -type f
Et ça marche. Seulement, comment préciser parmi ces chemins de recherches un chemin qui contient des espaces ? Exemple :
search_path='/home/user1 /home/user2 /home/user1\ et\ user2'
En essayant d'ajouter le chemin de recherche "/home/user1\ et\ user2", ça ne marche pas.
Avez vous une idée ?
Merci beaucoup pour votre aide.
Dernière modification par wolf85kunst (Le 19/02/2013, à 17:30)
Les raisonnables ont duré, les passionnés ont vécu.
-- 10.04 Lucid Lynx --
Hors ligne
#2 Le 19/02/2013, à 17:44
- pingouinux
Re : commande find et l'utisation d'une variable
Bonjour,
find /home/user1 /home/user2 /home/user1\ et\ user2 -type f
ou bien
find /home/user1 /home/user2 "/home/user1 et user2" -type f
Hors ligne
#3 Le 19/02/2013, à 17:48
- Hizoka
Re : commande find et l'utisation d'une variable
alors plusieurs choses :
find `echo "$search_path"` -type f
l'echo est inutile...
find $search_path -type f
etrange qu'en utilisant les "\ " ca ne passe pas...
pour ce faire :
search_path='/home/user1 /home/user2 "/home/user1 et user2"'
mais perso je ferais plutot un tableau, ca serait plus propre je trouve.
search_path=("/home/user1" "/home/user2" "/home/user1 et user2")
et du coup la commande devient :
find "${search_path[@]}" -type f
Voici un bon guide de bash : http://abs.traduc.org/abs-fr/
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#4 Le 19/02/2013, à 17:59
- pingouinux
Re : commande find et l'utisation d'une variable
Il y a aussi eval, commande potentiellement dangereuse, dont la simple mention sur ce forum suscite toujours des réactions indignées :
eval find "$search_path" -type f
Hors ligne
#5 Le 19/02/2013, à 18:17
- wolf85kunst
Re : commande find et l'utisation d'une variable
Bonjour Merci pour vos réponses.
@Hizoka, ceci ne marche pas :
search_path='/home/user1 /home/user2 "/home/user1 et user2"'
find $search_path -type f
Voici le retour de la commande find :
find: "\"user1": Aucun fichier ou dossier de ce type
find: "et": Aucun fichier ou dossier de ce type
find: "user2\"": Aucun fichier ou dossier de ce type
Avez-vous d'autres idées ?
Sans passer par une variable ça fonctionne.
Quand aucun chemin ne comporte des espaces, effectivement pas besoin de faire un "echo" dans le "find".
[EDIT: ça fonctionne avec le tableau, mais j'aimerai comprendre le comportement de bash avec les précédentes méthodes]
Merci beaucoup.
Dernière modification par wolf85kunst (Le 19/02/2013, à 18:23)
Les raisonnables ont duré, les passionnés ont vécu.
-- 10.04 Lucid Lynx --
Hors ligne
#6 Le 19/02/2013, à 19:06
- Hizoka
Re : commande find et l'utisation d'une variable
donc je confirme que ca na passe pas avec :
dossier='"a et b"'
dossier='a\ et\ b'
mais en meme temps une variable n'est pas sensé contenir plusieurs valeurs (d'une certaine facon).
car
dossier="a et b"
find "${dossier}" -type -f
marche tres bien.
D'ou l'interet d'utiliser un tableau qui est pour le coup adapter aux valeurs multiples.
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne