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 :

Comment coder un chemin d'accès pour exécuter un script ou pour copier un fichier dans un dossier ?


Sujet :

Shell et commandes GNU

  1. #21
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 120
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 120
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Oui
    [...]
    Jolie démonstration, merci.
    (j'aurai encore appris quelque chose ce soir, faudra juste que je m'en souvienne...)

  2. #22
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2013
    Messages : 8
    Par défaut
    Bonjour,

    Il y a l'erreur suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $ ./renCATExp.sh
    mv: cannot stat '/home/toto/source/aabbbccc*.txt': No such file or directory
    et un echo $nouveau_nom_fichier affiche /home/toto/source/aabbbccc*.txt comme valeur de cette variable alors qu'elle devrait avoir $nom_fichier amputé de $prefix



    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
     
    #!/bin/bash
    #"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    # Renommer export avant transfert"
    #"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    # renCATExpt.bash V0.1# GG #
    # Declaration variables
    script=/$HOME/scripts
    log=$HOME/logs
    archive=$HOME/archive
    source=$HOME/source
    prefix=aabbbccc
    ficlog=logrename.txt
    # Si absent, crée le fichier
    test ! -f "$log/$ficlog" && touch "$log/$ficlog" 
    # puis, dans tous les cas, ajoute la date à laquelle le script est executé
    echo "$gdate"  >> "$log/$ficlog"
    # Renommer fichier par suppression préfix 9 1er caractères
    # Boucle pour rechercher tout fichier debutant avec aaabbbccc suivi de _973 et une extension .txt situé dans le dossier $SOURCE
    for nom_fichier in "$source/$prefix"*.txt
    do
    # Attribuer à la variable nouveau_nom_fichier la valeur de nom_fichier sans le préfix aaabbbccc
    nouveau_nom_fichier=`echo $nom_fichier|sed 's/$prefix//g'`;
    # Renommer fichier 
    mv "$nouveau_nom_fichier" "$archive" >> "$log/$ficlog"
    # Transferer fichier vers machine windows
    #scp "$archive"/*.txt toto@winserv:/~
    done

  3. #23
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    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 832
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par glarance Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mv: cannot stat '/home/toto/source/aabbbccc*.txt': No such file or directory
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ... tout fichier debutant avec aaabbbccc
    prefix=aabbbccc
    Ouvre un peu les yeux!!!
    Autre chose: une variable entre quotes simples n'est pas traduite (cf ton sed). De plus, la variable nouveau_nom contient (enfin contiendrait si le sed était correctement écrit) le nom modifié mais le fichier d'origine, lui, n'a pas encore ce nom => un check du mv ne serait pas inutile non plus.

    Et quand je t'ai dit que tabuler deux fois (pour le "do" puis pour les instructions qui y sont associées) était idiot, c'est tout aussi nul de supprimer toutes les tabulations et coller ton code tout à gauche (j'ai l'impression de me retrouver dans une bd d'Iznogood). Pour une structure ça reste lisible mais quand tu en seras à 3 boucles imbriquées plus un "if"...
    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]

  4. #24
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 120
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 120
    Par défaut
    à moi :

    #echo "$gdate" >> "$log/$ficlog"
    c'est quoi ce gdate ?

    # Boucle pour rechercher tout fichier debutant avec aaabbbccc suivi de _973 et une extension .txt situé dans le dossier $SOURCE
    abc.txt pour faire tes premiers tests c'était trop simple et trop lisible ? Résultat tu nous décourages et il faut s'accrocher pour essayer de te comprendre.
    En plus il n'y a rien dans source...

    J'ai modifié ta boucle for en rajoutant trois témoins, qui permettent de voir que tu n'as rien dans tes dossiers, donc tu ne moveras rien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    for nom_fichier in "$source/$prefix"*.txt
    do
    echo "ici $nom_fichier"
    	# Attribuer à la variable nouveau_nom_fichier la valeur de nom_fichier sans le préfix aaabbbccc
    	nouveau_nom_fichier=`echo $nom_fichier | sed 's/$prefix//g'`;
    	# Renommer fichier
    echo "là $nouveau_nom_fichier"
    echo "dernier $archive" 
    	mv "$nouveau_nom_fichier" "$archive" >> "$log/$ficlog"
    done
    Sortie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ici /tmp/source/aabbbccc*.txt
    là /tmp/source/aabbbccc*.txt
    dernier /tmp/archive
    mv: impossible d'évaluer '/tmp/source/aabbbccc*.txt': Aucun fichier ou dossier de ce type
    Et ton message d'erreur montre simplement que tu as un nom de fichier mais pas le fichier.

  5. #25
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    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 832
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Jipété Voir le message
    à moi :
    Un appel à l'aide ou un cri de courage?

    Citation Envoyé par Jipété Voir le message
    En plus il n'y a rien dans source...
    Euh... pour mes tests je me suis arrangé pour qu'il y ait des trucs => for i in $(seq 20); do touch "source/aaabbbccc$i.txt"; done
    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. #26
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2013
    Messages : 8
    Par défaut
    Bonjour,
    le gdate est une variable que j'ai fait pour ajouter la date dans le fichier de log
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gdate=$(date +"%A %d %B %Y - %X")
    Ouf!!! ça m'a pris du temps mais le script fonctionne.
    En tout cas je vous remercie les gars de votre assistance. Les fichiers sont bien renommés et le fichier de log est bien alimenté.
    Quant à moi je continu a pratiquer.

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 652
    Par défaut


    en bash :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf -v gdate '%(%A %d %B %Y - %X)T'
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Comment copier le fichier dans le dossier interne JSF
    Par zikyoubi dans le forum Développement Web en Java
    Réponses: 0
    Dernier message: 20/05/2018, 10h19
  2. Comment copier un fichier dans un dossier de mon choix
    Par sebac dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 20/05/2010, 12h25
  3. Réponses: 9
    Dernier message: 20/02/2009, 17h51
  4. Comment copier un fichier dans le dossier temporaire ?
    Par zaydoun_391 dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 28/12/2007, 05h42
  5. Réponses: 3
    Dernier message: 30/11/2006, 11h38

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