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

Linux Discussion :

[BASH]deux commandes dans une seule ligne


Sujet :

Linux

  1. #1
    Membre habitué Avatar de vbcasimir
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    455
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2003
    Messages : 455
    Points : 168
    Points
    168
    Par défaut [BASH]deux commandes dans une seule ligne
    bonjour

    Je voudrais éxecuter deux commandes en une seule ligne voici les commandes que j'effectue


    find -type f -ctime +5 -name "*.trc" -exec tar -zcf /Backup/trc_${env_name}_${dateJour}_${rep}.tar ./*.trc \;
    find -type f -ctime +5 -name "*.trc" -exec rm -f {} \;
    je souhaiterais donc avec une seule commande effectuer un "tar" puis un "rm" des fichiers

    j'ai tenté de mettre l'opérateur && mais ça me fait une erreur ..


    Merci
    c@simir

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 49
    Points : 53
    Points
    53
    Par défaut
    ben si, le && doit fonctionner

    soit tu fais:
    1/ command1 ; command1
    command1 sera exécuté puis command2 (même si command1 retourne une erreur

    2/ command1 && command2
    command1 sera exécuté puis command2 au condition que command1 ne retourne pas d'erreur

    si ton && ne fonctionne pas, c'est que tu as une erreur de syntaxe dans ton command1

    bref,
    find -type f -ctime +5 -name "*.trc" -exec tar -zcf /Backup/trc_${env_name}_${dateJour}_${rep}.tar ./*.trc \; && find -type f -ctime +5 -name "*.trc" -exec rm -f {} \;
    doit fonctionner (au niveau de la syntaxe du bash, mais peut être que find / tar ne font pas ce que tu veux)

  3. #3
    Membre habitué Avatar de nowahn
    Homme Profil pro
    Inscrit en
    Août 2008
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 84
    Points : 150
    Points
    150
    Par défaut
    Bonjour,

    Si c’est pour faire le tar et le rm avec une seule et même command find, tu peux utiliser plusieurs fois l’option -exec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find « options de recherche » -exec « commande 1 » \; -exec « commande 2 » \;
    C’est-à-dire pour toi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find -type f -ctime +5 -name "*.trc" -exec tar -zcf /Backup/trc_${env_name}_${dateJour}_${rep}.tar ./*.trc \; -exec rm -f {} \;

  4. #4
    Membre habitué Avatar de vbcasimir
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    455
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2003
    Messages : 455
    Points : 168
    Points
    168
    Par défaut
    merci ça fonctionne impect
    c@simir

  5. #5
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par nowahn Voir le message
    C’est-à-dire pour toi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find -type f -ctime +5 -name "*.trc" -exec tar -zcf /Backup/trc_${env_name}_${dateJour}_${rep}.tar ./*.trc \; -exec rm -f {} \;
    Hum.. je suis dubitatif sur la partie en rouge. Car elle indique au tar de ne prendre que les fichiers "*.trc" du dossier courant.
    Alors soit les fichiers ne sont qu'à un seul endroit et le find est inutile, soit il faut préciser spécifiquement au tar que l'on veut prendre en compte le fichier trouvé par find et utiliser pour ça la syntaxe {}
    Le problème, c'est que le "-exec" est appelé à chaque fichier renvoyé par le find. Or la commande tar part du principe qu'on ne l'appelle qu'une seule fois et qu'on lui passe en paramètre l'ensemble des fichiers à archiver

    Donc moi, j'aurais fait plutôt ainsi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    tar -zcf /Backup/trc_${env_name}_${dateJour}_${rep}.tar $(
    find -type f -ctime +5 -name "*.trc" -print -exec rm -f {} \;)
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 30/06/2009, 20h44
  2. integrer deux requetes dans une seule requete access
    Par laurent.w dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 27/12/2006, 15h11
  3. Ecrire dans une seule ligne
    Par jbidou88 dans le forum Access
    Réponses: 4
    Dernier message: 04/09/2006, 14h52
  4. regrouper des informations dans une seule ligne
    Par rozow dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 11/04/2006, 16h03
  5. plusieurs enregistrements dans une seul ligne
    Par Celelibi dans le forum Requêtes
    Réponses: 3
    Dernier message: 03/01/2005, 15h55

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