Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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