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 :

sauvegarder des fichiers d'un repertoire courant


Sujet :

Shell et commandes GNU

  1. #1
    Membre éclairé Avatar de mouss4rs
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    884
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 884
    Par défaut sauvegarder des fichiers d'un repertoire courant
    Bonjour,

    J'aimerai faire ceci dans l'ordre:

    1. Saisie du répertoire par l'utilisateur
    2.tester l'appartenance au repertoire courant
    3.Demander le nom de repertoire a créer pour sauvegarder les fichiers du repertoire saisie (1)
    4.afficher le nombre fichier copiés

    J'ai fait un début, mais le problème est que je ne sais pas trop comment m'y prendre.

    Voici ce que je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    #! /bin/bash
     
    for f in *.back;
    do mv $f ~/${f%.back}.txt ; done
    echo $*
    echo fin;
    Quelqu'un aurait-il une idée ?

    merciiiiiiiiiiiiii

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 730
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 730
    Par défaut
    dans une console, tape :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    help read
     
    help test
    d'une manière plus générale, man bash, et plus particulièrement "Évaluation arithmétique"

  3. #3
    Membre éclairé Avatar de mouss4rs
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    884
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 884
    Par défaut
    t pas marrant mec.
    y'a le man aussi !
    Ce que je veux c'est juste une aide pour tester l'appartenance du répertoire saisie au repertoire courant.
    c'est ce qui me bloque le plus.

  4. #4
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 730
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 730
    Par défaut
    Je ne voulais pas être drôle, mec.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    PWD=$(pwd)
    read REP
    test -d "$PWD/$REP" && {
       echo "$REP est dans $PWD"
    } || {
       echo "$REP n'est pas dans $PWD"
    }

  5. #5
    Membre éclairé Avatar de mouss4rs
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    884
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 884
    Par défaut
    ton test ne marche pas.
    exemple: quand j'execute: ./sauvegarde kjnguifh
    il me dit qu'il est dans pwd.

    là c'est marrant par contre

  6. #6
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 730
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 730
    Par défaut
    Le test fonctionne.
    Par contre ton script, lui, ne fonctionne pas (c'est vrai que c'est hilarant).

    Mais sans l'avoir sous les yeux, on ne peut pas savoir ce qui ne va pas...

  7. #7
    Membre éclairé Avatar de mouss4rs
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    884
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 884
    Par défaut
    Autant pour moi. Je n'ai pas su ce qu'était la commande read.
    cependant, je n'ai qu'une partie de mon test.
    Je dois aussi sauvegarder les fichiers d'un répertoire dans un autre qui existe dans le meme répertoire courant.

    Voici ce que je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    #!/bin/sh
    
    
    compress=gzip
    
    progname=$(basename $0)
    
    if [ $# -eq 0 ] ; then 
      echo "Erreur1 Aucun répertoire saisie (Synthaxe: ./$progname <répertoire>)" >&2 ; exit 1 
    fi
    
    PWD=$(pwd)
    if test -d "$PWD/$1"
    then
    echo "$1 existe dans $PWD"
    echo
    echo "Dans quel répertoire existant voulez-vous sauvegarder"
    read Repexist
    	if test -d "$PWD/$Repexist"
    	then
       	echo "$Repexist existe dans $PWD"
    		archivename="$(echo $1 | sed 's/$/.back.tgz/')"
    
    		if tar cf - $1 | $compress > $archivename ; then 
    	 	echo "Répertoire $1 archivé sous le nom $archivename" 
    		else 
      		echo "Avertissement: tar a eu des problèmes en archivant $1" 
    		fi
    	else
    	echo "$Repexist n'existe pas dans $PWD"
    	exit 1
    	fi
    	
    else
       echo "$1 n'existe pas dans $PWD"
    fi
    
    exit 0
    ce que je fais, c'est que j'archive dans le Bureau au lieu d'archiver dans le répertoire saisie par l'user.

    Aurais-tu une idée ?

    merci beaucoup mec

  8. #8
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 730
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 730
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    archivename="$Repexist/$1.back.tgz"

  9. #9
    Membre éclairé Avatar de mouss4rs
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    884
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 884
    Par défaut
    Oui, merci j'ai trouvé.
    mais en faite, ce que je veux c'est ne pas archiver un répertoire.
    il faut que je copie juste les fichier et les mettre dans un autre répertoire.
    je suppose qu'il faut faire une boucle for ?
    Mais je ne sais pas comment obtenir le nombre de fichier dans un repertoire et non pas les dossier.
    voici ce que je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $nf = ls -al $PWD/$1 | wc -l
    echo "nf: "$nf
    		if cp -R $1 $Repexist ; then 
    	 	echo "Répertoire $1 archivé sous le nom $archivename" 
    		else 
      		echo "Avertissement: tar a eu des problèmes en archivant $1" 
    		fi

  10. #10
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 730
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 730
    Par défaut
    Citation Envoyé par mouss4rs
    je suppose qu'il faut faire une boucle for ?
    effectivement.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for fichier in $1/*; do
       test -f $fichier && { cp $file $Repexist/ && (( nb2fichiers_cp ++ )); }
    done
    echo "$nb2fichier_cp fichiers copiés."

  11. #11
    Membre éclairé Avatar de mouss4rs
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    884
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 884
    Par défaut
    Ouai, tu m'as compris.
    mais ca ne marche pas car ca ne copie les fichiers
    je pense qu'il y'a une erreur de syntaxe quelques part.
    j'ai fait un echo "ici " dans la boucle for.
    apparemment, il ne passe qu'une fois au lieu de 5 fois car j'ai 5 fichiers.

  12. #12
    Membre éclairé Avatar de mouss4rs
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    884
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 884
    Par défaut
    j'AI TROUVÉ en enlevant quelques synthaxe dans ton code.

    merci mec t génial
    Comment pourrais-je te remercier ... ?

  13. #13
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 730
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 730
    Par défaut
    en fait, l'ajout de quelques signes dollar (en rouge dans le code au-dessus), que j'avais oubliés, devrait faire tourner la boucle.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 21/07/2006, 14h22
  2. Réponses: 6
    Dernier message: 26/12/2005, 01h48
  3. Lister des fichiers dans un repertoire
    Par K.othmane dans le forum Langage
    Réponses: 1
    Dernier message: 23/12/2005, 12h14
  4. Charger des fichiers d'un repertoire
    Par demanghonj dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 05/01/2005, 18h23

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