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 :

Archivage en bash


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2023
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France, Meuse (Lorraine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mars 2023
    Messages : 2
    Par défaut Archivage en bash
    Bonjour

    Voila je dois réaliser un script .sh qui doit archiver les fichiers (pdf,png,odt,...), si il sont plus vieux qu'une date indiquée par l'utilisateur, l'utilisateur aura le choix des dossiers sur lequel il voudra réaliser l’opération d'archivage.

    Voici mon script :

    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
    40
     
    archiv()    {
    clear
    echo "Bienvenue dans l'option d'archivage des fichiers selon une date demandé"
    echo ""
     
    read -p "Veuillez entrer la date à partir de laquelle vous souhaitez archiver les fichiers (format: JJ-MM-AAAA) : " date
     
    if [[ "$date" =~ ^[0-9]{2}-[0-9]{2}-[0-9]{4}$ ]]; then
      echo "La date est correcte."
    else
      echo "La date n'est pas au format JJ-MM-YYYY."
      sleep 1
      exit
    fi
    echo ""
     
    read -p "Entrez le chemin absolu du répertoire de base : " base_dir
     
    if [ ! -d "$base_dir" ]; then
      echo "Le répertoire $base_dir n'existe pas."
      exit
    fi
     
    # Boucle pour lister les dossiers disponibles dans le répertoire de base
     
    echo ""
    echo "Dossiers disponibles :"
    dir_count=0
    for dir in "$base_dir"/*/
    do
      if [ -d "$dir" ]; then
        dir_count=$((dir_count+1))
        echo "$dir_count. ${dir%/}"
      fi
    done
     
    echo ""
    echo "Entrez le numéro du dossier à archiver (séparé par des espaces si plusieurs) : "
    read -a selected_dirs
    Il me manque la dernière partie du script me permettant de boucler sur les fichiers présents dans les dossiers demandés par l'utilisateur, merci pour les pistes que vous pourrez me proposer.
    Cordialement

  2. #2
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 283
    Par défaut
    Bonjour

    Relis-toi. Si la date est au bon format, ton script dit que la date est incorrecte.

    Pour la boucle, tu n'en as pas besoin. find fonctionne très bien tout seul. À toi de lire man find pour trouver l'option qui prend les fichiers à partir d'une certaine date.

  3. #3
    Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2023
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France, Meuse (Lorraine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mars 2023
    Messages : 2
    Par défaut
    Citation Envoyé par Flodelarab Voir le message
    Relis-toi. Si la date est au bon format, ton script dit que la date est incorrecte.
    Veuillez entrer la date à partir de laquelle vous souhaitez archiver les fichiers (format: JJ-MM-AAAA) : 12-12-2020
    La date est correcte.

    Veuillez entrer la date à partir de laquelle vous souhaitez archiver les fichiers (format: JJ-MM-AAAA) : 2020-12-12
    La date n'est pas au format JJ-MM-YYYY.

    Donc c'est bon pour la date

  4. #4
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 283
    Par défaut
    Citation Envoyé par lulustucru07 Voir le message
    Donc c'est bon pour la date
    Non, toujours pas. J'ai effectivement fait l'erreur de croire que tu testais le bon format, puisqu'il existe tant de mauvais formats. Mais en fait, non. Tu as juste pris un mauvais format au hasard en déclarant que tous les autres formats étaient bons. Tu vas au devant de graves déconvenues.

    Et puis compter le nombre de chiffres, bof. Un anglo-saxon va inverser jour et mois. Mais le 12 du 31ème mois n'existe pas. Pourtant 2 chiffres chacun.

  5. #5
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 801
    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 801
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par lulustucru07 Voir le message
    Voici mon script
    C'est pas un script ça, c'est un formulaire administratif. On se croirait aux impôts!!!
    Un script qui pose 50 milliards de questions je te promets c'est pas viable. Exemple on répond à la question 4 et on se plante et faut tout recommencer. Ca gonfle tout utilisateur habitué d'Unix dès la 3° utilisation.
    Prends exemple sur ta façon de travailler: quand tu veux copier tous les fichiers du répertoire toto dans titi tu tapes cp toto/* titi. Ca te plairait un programme qui te demande
    • entrez le nom du premier fichier
    • où voulez-vous le copier?
    • entrez le nom du second fichier
    • où voulez-vous le copier?
    • ...

    ???

    Donc tu veux créer un script qui archive les fichiers d'un répertoire X tu crées le script dans lequel on lui passe le répertoire X en paramètre (ou en option). Et pareil pour la date. Et ensuite il se débrouille.
    Et ce n'est pas parce que les infos dont le script a besoin sont de nature différente que ça doit être un blocage. On peut par exemple mettre la date en premier paramètre et le(s) répertoire(s) dans les paramètres suivants. Ensuite le script récupère le premier paramètre, puis fait un shift et boucle sur les paramètres suivants...

    Citation Envoyé par lulustucru07 Voir le message
    Il me manque la dernière partie du script me permettant de boucler sur les fichiers présents dans les dossiers demandés par l'utilisateur,
    Ouais. Et puis entre le moment où tu affiches les dossiers numérotés et où l'utilisateur les choisis un nouveau dossier est créé. Ensuite (tu n'as pas écrit la suite mais je présume que tu penses à "l'utilisateur a entré X je récupère le dossier numéro X") ben manque de bol tout a été décalé et tu archives le mauvais...
    Accessoirement je ne vois pas à quoi sert la date si l'utilisateur spécifie explicitement le dossier qu'il veut archiver...

    Citation Envoyé par lulustucru07 Voir le message
    Donc c'est bon pour la date
    Mouais enfin ça valide aussi une date type 47-43-7801 mais passons car on n'en est pas encore là. D'abord le travail principal du script: archiver tes fichiers. La garniture (check de la date, musique d'ambiance, couleurs du texte) ça reste de la garniture. Et pour checker une date, autant éviter de réinventer la roue et utiliser un truc déjà existant: la commande "date". Tu fais date la_date_a_checker ça ne marche pas la date n'est pas correcte, ça marche la date est correcte.
    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]

  6. #6
    Membre émérite
    Homme Profil pro
    Architecte cybersécurité
    Inscrit en
    Avril 2014
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Architecte cybersécurité
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 563
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Ca gonfle tout utilisateur habitué d'Unix dès la 3° utilisation.
    Surtout quand tu connais la commande find -exec.

Discussions similaires

  1. Requête POST dans un script bash
    Par desperado dans le forum Linux
    Réponses: 4
    Dernier message: 11/12/2007, 22h38
  2. Extraire des lignes d'un fichier en commande bash
    Par newnew dans le forum Linux
    Réponses: 3
    Dernier message: 27/07/2004, 16h22
  3. Bash et fichiers
    Par localhost dans le forum Linux
    Réponses: 12
    Dernier message: 30/06/2004, 07h11
  4. Bash vs MySQL
    Par localhost dans le forum Linux
    Réponses: 3
    Dernier message: 28/06/2004, 10h48
  5. [struts] "Archivage" d'emails
    Par k4eve dans le forum Struts 1
    Réponses: 4
    Dernier message: 09/06/2004, 08h31

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