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 28/11/2011, à 20:03

baba00000000

[Résolu] Comprendre les () avec find.

Bonjour à tous.

Je voudrais comprendre une petite chose.
Débutant en bash et posant mes questions dans ce forum j'apprends doucement.

for copier in $(find $fichier -type d -name "*-*" -print0 | xargs -0) ; do cp $basechemin"rappel.txt" $copier ; done

Avec ça il parcour tous les répertoires.
Je me demandais si les parenthèses n'étais pas le problème ( sous shell et ne prenant pas en compte la variable fichier) ??
Car sinon sans ça marche bien mieux

for copier in $(find ~/fichier/ -type d -name "*-*" -print0 | xargs -0) ; do cp $basechemin"rappel.txt" $copier ; done

Par la même occasion j'utilise une boucle while:

while read
do
    cd "$(dirname "$REPLY")"
       COMMADE
done < <(find $fichier -name "*-*" -type d)

Est-ce que cette boucle fait la même chose que mon premier for ( parcours tous les dossiers).
Car j'essaye d’aiguiller la fonction find dans un répertoire bien précis.

Merci pour votre aide et votre apport de connaissance.

Dernière modification par baba00000000 (Le 30/11/2011, à 22:16)


http://racketiciel.info

http://racketiciel.info/petition/ Pétition qui ferra peut être changé les installations sur les pc vendu en France.

Hors ligne

#2 Le 28/11/2011, à 20:16

TraGiKomiK

Re : [Résolu] Comprendre les () avec find.

bonjour,

il existe cette structure pour la commande find qui permet d'executer sans pipe, les etoiles etant a remplacer bien entendu tongue):

find . -name *** -exec *** {} \;

wink

Dernière modification par TraGiKomiK (Le 28/11/2011, à 20:20)


Merci de mettre [RESOLU] dans le titre de votre post une fois le  probleme reglé!

GNU/Linux -> \o/

Hors ligne

#3 Le 28/11/2011, à 23:31

baba00000000

Re : [Résolu] Comprendre les () avec find.

Merci pour ta réponse. Qui d’ailleurs j'ai prise et qui contourne les parenthèses.
Mais j'ai toujours une interrogation sur c'est parenthèse. ( je fouillerais un peu plus demain soir)
Je sais qu'il y a plusieurs méthode pour arriver à une solution.

Mais par exemple:

for copier in $(find $fichier -type d -name "*-*" -print0 | xargs -0) 
 do 
cp $basechemin"rappel.txt" $copier 
COMMANDE
Autre COMMANDE
...
 done

Ma question est la suivante est ce que les parenthèse empêche la variable fichier ( qui contient une adresse style ~/chemin/sous_dossier/) d'être prise correctement ?? J'ai l'impression que ma variable fichier n'a aucun effet sur find.

find . -name *** -exec *** {} \;

Peux tu intégrer plusieur commande à cette ligne ?

Et la dernière question est ce que ça s'applique a ce while:

while read
do
    cd "$(dirname "$REPLY")"
       COMMANDE
       COMMANDE
       ...
done < <(find $fichier -name "*-*" -type d)

Cette ligne m'a l'air de fonctionner plus que le for.
Merci.


http://racketiciel.info

http://racketiciel.info/petition/ Pétition qui ferra peut être changé les installations sur les pc vendu en France.

Hors ligne

#4 Le 30/11/2011, à 16:56

pingouinux

Re : [Résolu] Comprendre les () avec find.

Bonjour,

baba00000000 #1 a écrit :
for copier in $(find $fichier -type d -name "*-*" -print0 | xargs -0) ; do cp $basechemin"rappel.txt" $copier ; done

Avec ça il parcour tous les répertoires.
Je me demandais si les parenthèses n'étais pas le problème ( sous shell et ne prenant pas en compte la variable fichier) ??

$fichier semble correct dans ce cas. Voici un petit test :

$ pwd;fichier=/tmp/compac
/tmp
$ for f in $(find $fichier -print0|xargs -0);do echo "=$f=";done
=/tmp/compac=
=/tmp/compac/compacts_01.jpg=
=/tmp/compac/compacts_02.jpg=

Hors ligne

#5 Le 30/11/2011, à 22:16

baba00000000

Re : [Résolu] Comprendre les () avec find.

Merci beaucoup pingouinux je comprends mieux
Donc j'ai surement un erreur dans mon code.
Je vais mettre résolut.


http://racketiciel.info

http://racketiciel.info/petition/ Pétition qui ferra peut être changé les installations sur les pc vendu en France.

Hors ligne