[Shell] Restriction speciale dans un find

Résolu
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
^^

3 réponses

  1. Modérateur
    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
    1. Merci pour ta simplification.

      ^^
      0
  2. Modérateur
    Salut,

    La réponse ne te convenait pas !? ;-\
    0
    1. 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
  3. Modérateur
    Essaie :
    find /home/zik/rock \
    	/home/zik\trier \
    	/home/zik\dub \( -name /home/zik/rock/archives20080501 -prune \) -o -name "redhot" -print
    ;-))
    0
    1. 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