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 :

Problème de CP dans un bash


Sujet :

Shell et commandes GNU

  1. #1
    Membre habitué
    Inscrit en
    Juin 2010
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 10
    Par défaut Problème de CP dans un bash
    Bonjour,
    j'ai un petit soucis avec un script bash:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    #!/bin/bash
     
    	file=$(sed -n "$i p" list.txt);
    	cp /home/dossier/test/ToScan/$file /home/dossier/test/Scanning/$file
    list.txt contient une liste de fichier.
    Je récupère le premier (j'ai mis exprès un nom de fichier du type 1.pdf pour éviter les problèmes de char spéciaux)
    et je veux juste copier ce fichier à un autre endroit mais il me renvoie une erreur: "impossible de créer le fichier standard /home/dossier/test/Scanning/1.pdf Aucun fichier ou dossier de ce type"

    le fichier se trouve bien dans le dossier ToScan, pour preuve si j'effectue le cp directement dans mon terminal, il fonctionne.

    quelqu'un a une idée?
    merci d'avance

  2. #2
    Membre émérite Avatar de messinese
    Homme Profil pro
    IT Security Consultant
    Inscrit en
    Septembre 2007
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IT Security Consultant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2007
    Messages : 429
    Par défaut
    Salut,

    as tu fait une vérification des droits ? ça sent fort le probleme de permissions..

    Cdlt.

  3. #3
    Membre habitué
    Inscrit en
    Juin 2010
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 10
    Par défaut
    Citation Envoyé par messinese Voir le message
    Salut,

    as tu fait une vérification des droits ? ça sent fort le probleme de permissions..

    Cdlt.
    yep j'en suis à un point ou j'ai chmod -R 777 tout le bouzoin. Et il me semble qu'en cas de problème de droit l'erreur est différente (permission non accordée, un truc du genre)

    je me dit que le probleme viens peut etre du fait que j'utilise bash et pas sh comme shell mais j'ai un doute sachant que 2 lignes au dessus je fais un cp (sans nom de variable dans le chemin) et ça passe

  4. #4
    Membre émérite Avatar de messinese
    Homme Profil pro
    IT Security Consultant
    Inscrit en
    Septembre 2007
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IT Security Consultant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2007
    Messages : 429
    Par défaut
    En effet oui, j'aurais encore une fois du lire mieux...

    La en effet.. ça marche pour d'autres fichiers ou c'est le premier de la liste et ça stoppe la ?

  5. #5
    Membre habitué
    Inscrit en
    Juin 2010
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 10
    Par défaut
    Citation Envoyé par messinese Voir le message
    En effet oui, j'aurais encore une fois du lire mieux...

    La en effet.. ça marche pour d'autres fichiers ou c'est le premier de la liste et ça stoppe la ?
    Pour faire court:
    - j'ai plein de fichier dans un répertoire "Collection"
    - je veux déplacer tout le contenu de Collection dans Toscan
    ->
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cp /home/dossier/Collection/*.* /home/dossier/test/ToScan
    -> ça marche impec (même pour les fichiers ayant des char spéciaux)

    je fais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ls /home/dossier/test/ToScan >>list.txt
    pour récuperer la liste des fichiers dans un .txt
    dans une While je veux copier un par un chaque fichier de Toscan à Scanning

    -> $i vaut 1, le while tourne jusqu'a atteindre le ligne max de list.txt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    file=$(sed -n "$i p" list.txt); 
    	cp /home/dossier/test/ToScan/$file /home/dossier/test/Scanning/$file
    et là ça coince j'ai la fameuse erreur "impossible de créer le fichier standard /home/dossier/test/Scanning/1.pdf Aucun fichier ou dossier de ce type"

  6. #6
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 362
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 362
    Par défaut
    Bonjour,

    Ton fichier list.txt, il n'aurai pas été édité sous windows par hazard ?
    et donc le fichier ne serais pas 1.pdf mais 1.pdf^M

    Peux-tu faire un:

  7. #7
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 362
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 362
    Par défaut
    Ne pas tenir compte de mon post précédent.
    Essaye comme ceci pour voir:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    file="$(sed -n ${i}p list.txt)"; 
    cp /home/dossier/test/ToScan/"$file" /home/dossier/test/Scanning/"$file"

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

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

    ON N'UTILISE PAS ls DANS UN SCRIPT !!!
    et on évite les fichiers temporaires.

    pourquoi ne pas simplement utiliser deux cp, tous les deux depuis /home/dossier/Collection, l'un vers /home/dossier/test/ToScan, et l'autre vers /home/dossier/test/Scanning
    ?
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  9. #9
    Membre habitué
    Inscrit en
    Juin 2010
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 10
    Par défaut
    Citation Envoyé par disedorgue Voir le message
    Ne pas tenir compte de mon post précédent.
    Essaye comme ceci pour voir:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    file="$(sed -n ${i}p list.txt)"; 
    cp /home/dossier/test/ToScan/"$file" /home/dossier/test/Scanning/"$file"
    Bonjour à vous,

    Toujours la même erreur. Ce qui est étrange c'est que au dessus je fais un echo $file et il m'affiche le nom du fichier correctement.

    pourquoi ne pas simplement utiliser deux cp, tous les deux depuis /home/dossier/Collection, l'un vers /home/dossier/test/ToScan, et l'autre vers /home/dossier/test/Scanning
    ?
    Parce que ces dossiers inter agissent avec un software qui m'oblige à garder cette structure


    à savoir que
    - je cp les fichiers de Collection à ToScan
    - je prend le premier fichier de ToScan je le met dans Scanning
    - j'exploite le fichier qui me sort un resultat.
    - je backup ces resultats dans un autre dossier
    - je vide le dossier Scanning
    - je met le deuxieme fichier de ToScan dans scanning
    etc

    edit: et après un check google infructueux, pourquoi ne pas utiliser ls dans un script? c'est une méthode efficace pour lister un repertoire dans un txt non?

  10. #10
    Membre habitué
    Inscrit en
    Juin 2010
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 10
    Par défaut
    La nuit porte conseil, j'ai assez honte de moi...
    j'ai passé la journée sur ce projet j'ai du avoir la tête trop dans le code
    cp /home/dossier/test/ToScan/"$file" /home/dossier/test/Scanning/"$file"
    le dossier Scanning se situe à /home/dossier/Scanning/ et non /home/dossier/test/Scanning/
    ...

    merci d'avoir pris le temps de m'aider !

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

Discussions similaires

  1. [Bash] Problème avec paramètres dans variables
    Par bisol dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 09/03/2013, 17h39
  2. [Bash] Problème avec locate dans un script
    Par kopros2 dans le forum Administration système
    Réponses: 2
    Dernier message: 07/12/2011, 07h06
  3. [BASH] - Problème d'espace dans un printf
    Par ArKam dans le forum Linux
    Réponses: 2
    Dernier message: 17/11/2011, 14h59
  4. Réponses: 19
    Dernier message: 27/08/2003, 15h32
  5. problème de guillemets dans une formule shell
    Par dim_italia dans le forum VBA Access
    Réponses: 7
    Dernier message: 18/08/2003, 12h46

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