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 :

Suppression de fichier


Sujet :

Shell et commandes GNU

  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2011
    Messages : 74
    Par défaut Suppression de fichier
    Re Bonjour,

    Je reviens vous poser une question

    J'ai écrit un petit programme qui liste les fichiers du répertoire courant, mais qui ajoute un numéro devant chaque fichiers, voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    pwd= « $chemin »
    echo $chemin
     
    j=1
    for i in *
    do
    echo « $j)$i »
    j=$((j+1))
    done
    Maintenant, je souhaite, écrire un programme avec diverses fonctions, dont une qui supprime un fichier. Une fois listé, j'écrit le numéro du fichier que je souhaite effacer, et ensuite il supprime celui-ci. Mais quand j'éxécute mon code, il ne le supprime pas, voici mon code:

    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
    pwd= « $chemin »
    echo $chemin
     
    j=1
    for i in *
    do
    echo « $j)$i »
    j=$((j+1))
    done
     
    function supprimerFichier
    {
    echo "quel fichier ?"
    read j
    rm -f $j
    echo "fichier delete"
    }
     
    echo " 2- supprimer un fichier"
    read choix
     
    case "$choix" in
    2) supprimerFichier;;
     
    esac


    Si dans mon rm, je met par exemple $fichier, et qu'ensuite une fois éxécuté, je lui indique directement le nom du fichier à supprimé, par exemple, test.txt, là ça fonctionne, mais quand je souhaite récupérer la variable j qui contient le numéro, ça ne fonctionne pas.

    C'est plus simple, de mettre directement le numéro que de mettre le nom du fichier.

    J'ai vu qu'on pouvait utiliser un tableau, mais je ne sais pas comment récupérer dans un tableau la variable "j" qui contient le numéro, puis comment l'exploiter par la suite ?

    Merci d'avance.

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 676
    Par défaut
    Bonjour,

    Code BASH : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #!/bin/bash
    shopt -s nullglob
     
    supprFichier(){
       read numFichier
       rm "${listeDfichiers[numFichier-1]}"
    }
     
    listeDfichiers=( ./* )
     
    for i in "${!listeDfichier[@]}"; do echo "$((i+1)) - ${listeDfichiers[i]}"; done
     
    supprFichier
    il y a des tests à ajouter pour s'assurer que les données existent, et/ou qu'elles ont le bon types.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2011
    Messages : 74
    Par défaut
    Je garde ma fonction lister ?

    Je ne comprends pas très bien, la ligne du for, et le "shopt -s nullglob" au début.

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 676
    Par défaut
    ah, non ! tu peux tout mettre au feu.

    la boucle for affiche la liste indexée.
    nullglob s'assure que si le répertoire est vide, le tableau ne contiendra pas littéralement ./*.

    Citation Envoyé par NBaH
    il y a des tests à ajouter pour s'assurer que les données existent, et/ou qu'elles ont le bon types.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

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

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

    ça ressemble à un début d'usine à gaz. Quel est le but final?

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2011
    Messages : 74
    Par défaut
    J'affiche une liste de fichier du répertoire courant, avec un numéro devant chaque fichier ou dossier.
    Ensuite, je demande quel fichier supprimer ? Et au lieu de taper le nom du fichier, je cherche à taper le numéro directement.
    Voici le but final.

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 297
    Par défaut
    1. Tu as déjà exprimé cela.
    2. Le but final est donc de donner le choix de supprimer un fichier ou dossier.
    3. Ne modifie pas les noms de fichiers juste parce que tu veux les supprimer.


    Tu peux avoir les noms de dossiers par:
    Tu peux avoir les noms de fichiers par:
    Tu peux numéroter les lignes ainsi crées par:
    Tu peux utiliser des fichiers temporaires pour stocker ces listes. Tu les feras ressortir par un 'cat'.

    Mélanger les noms de fichiers et les numéros n'est pas propre.

Discussions similaires

  1. [CVS] Répercuter les suppressions de fichiers
    Par efaure dans le forum Eclipse Java
    Réponses: 6
    Dernier message: 17/05/2004, 17h34
  2. [BATCH]Suppression de fichier
    Par alxkid dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 21/04/2004, 13h25
  3. Réponses: 4
    Dernier message: 16/04/2004, 08h20
  4. Auto suppression de fichier
    Par pato dans le forum Langage
    Réponses: 4
    Dernier message: 05/03/2004, 09h09
  5. Suppression de fichiers
    Par wasch dans le forum C++Builder
    Réponses: 6
    Dernier message: 20/11/2003, 16h37

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