Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/07/2007, 14h02   #1
Membre émérite
 
Inscription : juin 2006
Messages : 1 117
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : juin 2006
Messages : 1 117
Points : 989
Points : 989
Par défaut [find] Problème avec -exec

Bonjour.

Comme la discussion est orientée autour de find, je voudrai un peu d'aide. En effet, je n'arrive pas à faire marcher la commande suivante :

Code :
find ./ -name *.exe -exec mv -v '{}' ../exe_folder \ ;
Mon objectif c'est qu'elle copie tous les fichiers de l'arborescence issue du répertoire courant vers le répertoire ../exe_folder. Mais ça ne marche pas, pouvez vous me dire pourquoi ?
kromartien est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/07/2007, 14h05   #2
Rédacteur
 
Avatar de Arnaud F.
 
Homme Arnaud Feltz
Développeur .NET
Inscription : août 2005
Messages : 5 204
Détails du profil
Informations personnelles :
Nom : Homme Arnaud Feltz
Âge : 25
Localisation : France

Informations professionnelles :
Activité : Développeur .NET
Secteur : Transports

Informations forums :
Inscription : août 2005
Messages : 5 204
Points : 6 113
Points : 6 113
Citation:
Envoyé par kromartien
Bonjour.

Comme la discussion est orientée autour de find, je voudrai un peu d'aide. En effet, je n'arrive pas à faire marcher la commande suivante :

Code :
find ./ -name *.exe -exec mv -v '{}' ../exe_folder \ ;
Mon objectif c'est qu'elle copie tous les fichiers de l'arborescence issue du répertoire courant vers le répertoire ../exe_folder. Mais ça ne marche pas, pouvez vous me dire pourquoi ?
Enlève les quotes autour des accolades, il n'y en a pas normalement
__________________
C'est par l'adresse que vaut le bûcheron, bien plus que par la force. Homère

Installation de Code::Blocks sous Debian à partir de Nightly Builds
Arnaud F. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/07/2007, 14h30   #3
LLB
Membre Expert
 
Inscription : mars 2002
Messages : 945
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 945
Points : 1 083
Points : 1 083
(C'eût été mieux de faire un nouveau thread, je pense.)

Citation:
Envoyé par kromartien
Mon objectif c'est qu'elle copie tous les fichiers de l'arborescence issue du répertoire courant vers le répertoire ../exe_folder. Mais ça ne marche pas, pouvez vous me dire pourquoi ?
Copier ou déplacer ?

Code :
find . -name '*.exe' -exec mv '{}' ../exe_folder/ \;
En l'absence de quote, l'expansion du shell se fait sur *.exe. Du coup, ça risque de faire une erreur dans les arguments de find.

@Buchs : certes, les quotes sont inutiles autour des accolades dans la plupart des shells, mais ça ne peut en aucun cas être une erreur. Je conseille de les laisser quand on a le moindre doute (on n'est jamais trop prudent).
LLB est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/07/2007, 14h40   #4
Membre émérite
 
Inscription : juin 2006
Messages : 1 117
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : juin 2006
Messages : 1 117
Points : 989
Points : 989
Citation:
Envoyé par LLB
(C'eût été mieux de faire un nouveau thread, je pense.)
D'accord, si un modérateur peut le faire, j'ai ajouté un titre à ma question initiale.

Citation:
Envoyé par LLB
Copier ou déplacer ?
D'accord c'est différent , j'aurai dû dire déplacer (mv déplace, cp copie) ou utiliser cp (d'ailleurs c'est plus prudent d'utiliser cp). Je vais donc copier.

Citation:
Envoyé par LLB
Code :
find . -name '*.exe' -exec mv '{}' ../exe_folder/ \;
J'ai un problème, ça ne marche pas plus. J'ai le message suivant :
Code :
find: Paramètre manquant pour « -exec »
kromartien est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/07/2007, 14h47   #5
LLB
Membre Expert
 
Inscription : mars 2002
Messages : 945
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 945
Points : 1 083
Points : 1 083
Hé bien... chez moi, ça marche.

En général, pour débugguer un find, j'ajoute echo après le -exec (pour afficher la commande sans l'exécuter) :
Code :
find . -name '*.exe' -exec echo mv '{}' ../exe_folder/ ';'
Mais ici, ça ne devrait pas aider beaucoup. Soit tu as un find exotique, soit ton shell est inhabituel. Tu pourrais donner les versions de ces outils ?

( au cas où : essaie avec ';' plutôt que \; )
LLB est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/07/2007, 14h53   #6
Membre émérite
 
Inscription : juin 2006
Messages : 1 117
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : juin 2006
Messages : 1 117
Points : 989
Points : 989
merci ça marche beaucoup mieux maintenant, le problème était bien que le shell interprétait directement le point virgule et donc -exec ne comprenait pas les paramètres passés. Merci, ça fonctionne maintenant.
kromartien est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/07/2007, 00h55   #7
LLB
Membre Expert
 
Inscription : mars 2002
Messages : 945
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 945
Points : 1 083
Points : 1 083
Par curiosité, c'est quoi comme Shell ?
LLB est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/11/2007, 23h23   #8
Membre émérite
 
Inscription : juin 2006
Messages : 1 117
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : juin 2006
Messages : 1 117
Points : 989
Points : 989
bash avec Debian GNU/Linux
kromartien est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/11/2007, 11h45   #9
Modérateur
 
Avatar de gangsoleil
 
R&D en systemes informatiques bas niveau Unix/Linux
Inscription : mai 2004
Messages : 5 497
Détails du profil
Informations personnelles :
Âge : 31
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : R&D en systemes informatiques bas niveau Unix/Linux

Informations forums :
Inscription : mai 2004
Messages : 5 497
Points : 9 677
Points : 9 677
Bonjour,

Dasn ton premier post, tu as un espace entre le \ et le ; ce qui explique probableent ton soucis de non prise en compte du ; par le paramètre exec du find.
__________________
Modérateur "C", "Informatique Générale & Hardware" et "Unix"
Les règles du forum
gangsoleil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/11/2007, 17h09   #10
Membre émérite
 
Inscription : juin 2006
Messages : 1 117
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : juin 2006
Messages : 1 117
Points : 989
Points : 989
D'accord ,j'ai bien sais le truc. Je pense que find est vraiment un bel outil pour gérer ses fichiers. Merci beaucoup de m'aider à comprendre son utilisation (car maintenant certains de mes problèmes sont résolus) Le sujet initial du thread l'est aussi par la même occasion.
kromartien est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h58.


 
 
 
 
Partenaires

Hébergement Web