IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

utilisation de l'option -exec de find


Sujet :

Shell et commandes GNU

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 81
    Par défaut utilisation de l'option -exec de find
    Bonjour,
    Voila j'aimerais récupérer des fichiers se trouvant dans une arborescence en créant la même arborescence à partir de la commande find, donc j'ai effectué la commande comme telle :
    find . -type f -exec cp --parent {} chemin/dossier/ \;

    En gros je comptais récupérer tous les fichiers avec leurs sous-répertoires à partir de là où je me trouve vers le répertoire "dossier".

    Le problème est qu'il me donne une erreur sur l'option --parent et la commande cp. Voila le résultat :

    cp : illegal option -- parent
    Usage: cp [-f] [-i] ... f1 f2
    cp [-f] [-i] ... f1 ... fn d1
    cp -r|-R ... d1 ... dn-1 dn


    Donc je ne comprends vraiment pas pourquoi cela ne fonctionne pas. Si quelqu'un pouvait m'aider cela m'aarangerait pas mal.

    Merci d'avance.

  2. #2
    Expert confirmé Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Par défaut
    utilises -p au lieu de --parent
    si c'est les droits qui t'interessent

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 81
    Par défaut
    En fait ça me crée bien les fichiers dans le répertoire "dossier", mais j'aurais aimé que l'arborescence des répertoires soit aussi créée avec les fichiers à l'intérieur. Alors je pense que cela doit être possible notamment avec --parent, c'est pour cela que je l'avais utilisé.

    Donc si tu avais une solution pour cela je suis preneur. (peut-être existe-t-il une autre façon de faire comma via un script ....).

  4. #4
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    Copie récursive :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cp -r source destination

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 81
    Par défaut
    La copie récursive je l'avais déjà testé mais rien à faire cela me donne toujours les mêmes erreurs.
    find . -type f -exec cp -r --parent {} chemin/dossier/ \;

    Je ne comprends pas car dans un post de ce site ("Créer une arboresence à partir du résultat de 'find'"), une personne a réussi à le faire avec cette commande et pour moi ça ne fonctionne pas.

    N'y a-t-il pas une autre option comme --parent {} qui existe pour reproduire les dossiers parents d'un fichier ?

  6. #6
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    Citation Envoyé par panach91 Voir le message
    La copie récursive je l'avais déjà testé mais rien à faire cela me donne toujours les mêmes erreurs.
    Quelles erreurs ? Ca marche à tous les coups : faut que tu ailles dans le répertoire qui contient le répertoire à copier, puis cp -r repertoire_a_copier repertoire_qui_doit_contenir_la_copie.

    Mais je n'ai pas compris : tu veux reconstruire uniquement la structure des répertoires sans fichier ou tu veux copier répertoires + fichiers ?

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 81
    Par défaut
    Je connais la commande cp -r et je sais qu'elle marche mais dans mon cas cela ne fonctionne pas.

    Voici réellement ce que je veux (peut-être me suis-je mal exprimé auparavant) :
    Admettons que je sois ici : /HOME.
    Je possède des fichiers dans :
    /HOME/truc/fichiers.
    /HOME/truc/bidule/fichiers.
    /HOME/truc/bidule/machin/fichiers.
    Je souhaite reproduire l'arborescence truc/bidule/machin avec les fichiers dans chaque dossiers, dans ce répertoire /HOME/MOI/truc/bidule/machin.

    Pour cela je comptais faire un find pour trouver tous les fichiers à partir de /HOME et recréer l'arborescence avec l'option -exec cp --parent {}. Et c'est cela qui ne fonctionne pas.


    J'espère que cette fois-ci j'ai été plus clair. Merci pour votre aide.

  8. #8
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    Au risque de vraiment passer pour un lourd, explique moi pourquoi dans ton cas cp -r ne fonctionne pas !! C'est quoi l'erreur ? Problème de droit ? File system plein ? Je ferais ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    cd /HOME
    mkdir MOI
    cp -r truc MOI
    Citation Envoyé par panach91
    N'y a-t-il pas une autre option comme --parent {} qui existe pour reproduire les dossiers parents d'un fichier ?
    Visiblement, cp ne connait pas cette option. A mon avis, si tu tiens vraiment à utiliser find, il faut que tu passes en 2 fois : un premier find avec les options -type d -exec mkdir -p ... pour créer les répertoires puis faire un find avec -type f -exec cp {} ... pour copier les fichiers. Le souci c'est que le cp ne crée pas les répertoires qui manquent sauf à utiliser -r, mais là, on repart dans une discussion qu'on a déjà vue...

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 81
    Par défaut
    T'inquiètes je comprends ce que tu veux dire avec cp -r et comme je l'ai dis, j'ai déjà effectué cette commande; Maintenant voici l'erreur qu'il me donne :

    cp : insufficient arguments (1)
    Usage: cp [-f] [-i] ... f1 f2
    cp [-f] [-i] ... f1 ... fn d1
    cp -r|-R ... d1 ... dn-1 dn

    En fait tu as di quelque chose à laquelle je pensais, c'est que le cp ne doit pas créer les répertoires qui n'existent pas donc c'est pour cela qu'il me donne ces messages d'erreur.

    Je vais tester en utilisant les deux find voir si ça fonctionne. Je te tiens au courant.

  10. #10
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    Citation Envoyé par panach91 Voir le message
    cp : insufficient arguments (1)
    Pas normal, ça : tu es sûr de ta ligne de commande ? cp -r truc MOI.

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 81
    Par défaut
    ok d'accord je suis un idiot , j'ai retesté la commande cp -r et là c'est bon ça focntionne, j'avais juste oublié de mettre "./" => cp -r ../truc ./ (bien sur si l'on se place dans le dossier MOI.

    Merci de ton aide et encore désolé. Cela va beaucoup m'aider...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. verifier la suppression dans le exec du find
    Par decksroy dans le forum Linux
    Réponses: 4
    Dernier message: 04/12/2007, 11h45
  2. utilisation des commandes "." et "exec"
    Par khaliloum dans le forum Linux
    Réponses: 2
    Dernier message: 13/01/2007, 09h08
  3. Réponses: 5
    Dernier message: 29/05/2006, 14h27
  4. [ASA9] Jconnect utilisation de l'option DBF ???
    Par aliss dans le forum Sybase
    Réponses: 2
    Dernier message: 08/05/2006, 18h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo