#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/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 ):
find . -name *** -exec *** {} \;
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/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,
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/petition/ Pétition qui ferra peut être changé les installations sur les pc vendu en France.
Hors ligne