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 :

Soucis avec la commande cp


Sujet :

Shell et commandes GNU

  1. #1
    Expert éminent

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Points : 6 686
    Points
    6 686
    Par défaut Soucis avec la commande cp
    Bonjour

    J'ai un répertoire "truc" qui contient des fichiers et d'autres répertoires. Je souhaite copier dans le répertoire "test" tous les fichiers se trouvants dans "truc" mais uniquement les fichiers.
    Au départ, j'avais pensé à une commande genre:
    J'obtiens des messages :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cp: mail is a directory (not copied)
    ce qui est normal me direz-vous

    Pourriez-vous me rappeler l'option qui va bien svp ? la page de man de la commande cp sur ma FreeBSD est très petite

    Merci à l'avance
    .Olivier

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 116
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 116
    Points : 1 111
    Points
    1 111
    Par défaut
    peut être quelque chose comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for i in * ; do if [ -f $i ] ; then cp $i /repertoire_cible ; fi ; done
    mais comme cp ne copie pas les répertoires, il sera difficile voir imposible d'en copier dans le répertoire cible en omettant l'option -r (pour copie récursive). Ils seront occultés par le message d'erreur que tu nous as donné lors du processus de copie. Les variantes pour copier exclusivement les répertoires avec cp -rv utilisent [ -d $i ] pour vérifier que $i est un répertoire.

    Pour une utilisation plus compliquée, peut être que man find marchera. En tous cas, sous Unix je crois que man n'est pas vraiment la commande standard. Il faut peut être faire des choses comme ou j'avais vu aussi l'utilisation de xargs avec find pour le listage récursif, par exemple en faisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for i in $(find ./ -type f | xargs -d "\n") ; do
    qui copie fichier par fichier tous les fichiers dans le même répertoire de destination, sans tenir compte de leur position dans l'arborescence initiale.

  3. #3
    Expert éminent sénior 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 : 47
    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
    Points : 12 264
    Points
    12 264
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find -P source/ -depth -type f -exec cp -p {} desstination/ \;
    copie fichier par fichier tous les fichiers dans le même répertoire de destination, sans tenir compte de leur position dans l'arborescence initiale. aussi mais beaucoup plus vite et simplement

  4. #4
    Expert éminent

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Points : 6 686
    Points
    6 686
    Par défaut
    Citation Envoyé par frp31
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find -P source/ -depth -type f -exec cp -p {} desstination/ \;
    Il y a quand même un petit soucis avec la commande find. J'ai un répertoire caché qui comporte deux scripts. find va copier ces deux fichiers dans le répertoire test.

    Existe-il une option pour exclure le répertoire caché ?

    Merci
    .Olivier

  5. #5
    Expert éminent

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Points : 6 686
    Points
    6 686
    Par défaut
    Je viens de trouver la solition:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find -P $src/etc/ -path '*.scripts/*' -prune -o -path '*periodic/*' -prune -o -depth -type f -exec cp -p {} /etc/ \;
    ++
    .Olivier

  6. #6
    Expert éminent sénior 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 : 47
    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
    Points : 12 264
    Points
    12 264
    Par défaut
    je prend note

  7. #7
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 116
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 116
    Points : 1 111
    Points
    1 111
    Par défaut

    ah une seconde monsieur je n'arrive plus à suivre là
    --
    c'est vrai que le man de find est assez gros

  8. #8
    Expert éminent

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Points : 6 686
    Points
    6 686
    Par défaut
    Bonjour

    Est-il possible avec la commande find d'exécuter plusieurs commandes à la suite ?

    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find /tmp/base/files/scripts/ -type f -exec chmod 755 {} \;
    Je souhaite copier ces fichiers dans /usr/local/etc
    avec la commande:
    Avez-vous une idée ?

    Merci
    .Olivier

  9. #9
    Rédacteur
    Avatar de Arnaud F.
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Août 2005
    Messages
    5 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Finance

    Informations forums :
    Inscription : Août 2005
    Messages : 5 183
    Points : 8 873
    Points
    8 873
    Par défaut
    Ca doit être possible

    ++

    [edit] Ca donnerai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    find /tmp/base/files/scripts/ -type f -exec chmod 755 {} \; | xargs cp -p /usr/local/etc/
    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

  10. #10
    Expert éminent

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Points : 6 686
    Points
    6 686
    Par défaut
    Je croyais que xargs pouvait faire mon bonheur hélas non

    J'ai un répertoire dont tous les fichiers sont exécutables sauf deux scripts perl. Je souhaite retirer les droits d'exécution à tous les fichiers et les attribuer à mes 2 scripts perl.
    J'ai tenté avec cette commande:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    src="/root/test/"
    find $src -path '*.pl' -prune -o -type f -exec chmod a-x {} \; | xargs chmod -R 755 *.pl
    Les droits d'exécution sont bien retirés en revanche les 2 scripts perl restent inchangés

    Pouvez-vous me donner un coup de main svp ?

    Merki
    .Olivier

  11. #11
    Rédacteur
    Avatar de Arnaud F.
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Août 2005
    Messages
    5 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Finance

    Informations forums :
    Inscription : Août 2005
    Messages : 5 183
    Points : 8 873
    Points
    8 873
    Par défaut
    Y faut regarder les options de xargs, j'suis sur tu peux le faire avec

    Seulement faut savoir sous quelle forme son renvoyé les résultats de la commande find

    ++
    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

  12. #12
    Expert éminent

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Points : 6 686
    Points
    6 686
    Par défaut
    Je n'ai pas cherché avec xargs mais j'ai adapté mon script et la bonne nouvelle, pas besoin d'utiliser Find

    Merki

    PS: lorsque j'aurai un peu de temps devant moi, je me pencherai sur ce problème.
    .Olivier

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

Discussions similaires

  1. [Batch] Souci avec une commande dans un fichier bat
    Par coolanso dans le forum Scripts/Batch
    Réponses: 6
    Dernier message: 07/08/2014, 00h55
  2. Soucis avec une commande
    Par PMelgibson dans le forum IRC / mIRC
    Réponses: 0
    Dernier message: 29/01/2014, 19h13
  3. [MVVM] Souci avec les commandes
    Par Adrien.B dans le forum Windows Presentation Foundation
    Réponses: 3
    Dernier message: 02/10/2013, 14h42
  4. souci avec ma commande awk
    Par étoile de mer dans le forum Linux
    Réponses: 1
    Dernier message: 29/08/2010, 15h57
  5. soucis avec la commande java
    Par polymorphisme dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 29/07/2010, 15h11

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