[Shell] Restriction speciale dans un find

Résolu/Fermé
JOBiJOBa2 Messages postés 91 Date d'inscription mardi 13 mai 2008 Statut Membre Dernière intervention 23 avril 2009 - 21 mai 2008 à 11:43
JOBiJOBa2 Messages postés 91 Date d'inscription mardi 13 mai 2008 Statut Membre Dernière intervention 23 avril 2009 - 22 mai 2008 à 09:02
Bonjour,
j'ai une arborescence comme ci-dessous et je voudrais pouvoir rechercher un fichier avec son chemin.

home (rep)
    zik (rep)
        rock (rep)
           redhot (fic)
              archives20080501 (rep)
                 redhot (fic)
        trier (rep)
        dub (rep)
        autres(rep)


Sachant que je fais une recherche de ce style :
find /home/zik/rock \
	/home/zik\trier \
	/home/zik\dub  -name "redhot" <option?> >> fichier.txt




Comment restreindre la recherche dans le fichier /home/zik/rock/, car /home/zik/rock/archives20080501 est un fichier d'archive et des doublons peuvent être présent?
J'ai essayé avec -maxdepth 1 mais il me dit que l'option est invalide.<code>


Merci d'avance
^^
A voir également:

3 réponses

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
21 mai 2008 à 14:21
Mais bon tu t'embêtes pour rien :
jp@MDK:~/tmpfs ssh$ tree
.
|-- autres
|   `-- autres.txt
|-- dub
|   `-- dub.txt
|-- trier
|   `-- trier.txt
`-- zip
    `-- rock
        `-- redhot
            `-- archives20880501
                `-- redhot.txt

7 directories, 4 files

jp@MDK:~/tmpfs ssh$ find . \( -name archives20880501 -prune \) -o  -type f -name "*.txt" -print
./autres/autres.txt
./dub/dub.txt
./trier/trier.txt

jp@MDK:~/tmpfs ssh$
;-))
1
JOBiJOBa2 Messages postés 91 Date d'inscription mardi 13 mai 2008 Statut Membre Dernière intervention 23 avril 2009 5
22 mai 2008 à 09:02
Merci pour ta simplification.

^^
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
21 mai 2008 à 11:46
Salut,

La réponse ne te convenait pas !? ;-\
0
JOBiJOBa2 Messages postés 91 Date d'inscription mardi 13 mai 2008 Statut Membre Dernière intervention 23 avril 2009 5
21 mai 2008 à 11:50
Je n'arrive pas à l'appliquer sur cette exemple.

peut être que c'est parce que la solution était avec un find simple :

find rep1


Et pas avec un find "double" :

find /home/zik/rock \
	/home/zik\trier \
	/home/zik\dub  -name "redhot"



Je fais ça:

find /home/zik/rock \
	/home/zik\trier \
	/home/zik\dub \ ( -name /home/zik/rock/archives20080501 -prune \) -name "redhot"


et il me met :
ksh: syntax error: `(' unexpected



Je viens d'essayer ça :


find /home/zik/rock \
	/home/zik\trier \
	/home/zik\dub \ -name /home/zik/rock/archives20080501 -prune \ "redhot"


et il me met :
find: missing conjunction



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
21 mai 2008 à 12:31
Essaie :
find /home/zik/rock \
	/home/zik\trier \
	/home/zik\dub \( -name /home/zik/rock/archives20080501 -prune \) -o -name "redhot" -print
;-))
0
JOBiJOBa2 Messages postés 91 Date d'inscription mardi 13 mai 2008 Statut Membre Dernière intervention 23 avril 2009 5
21 mai 2008 à 14:00
Impeccable cela marche encore grâce à toi jipicy.

Ma première erreur était l'oubli de l'espace entre "/home/zik\dub \" et "( -name /home/zik/ ".
Ma deuxième était l'oubli de "-o" et "-print".

Donc la réponse est bien:

find /home/zik/rock \
	/home/zik\trier \
	/home/zik\dub \( -name /home/zik/rock/archives20080501 -prune \) -o -name "redhot" -print



Merci pour tout.
^^
0