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

Linux Discussion :

problème espaces dans shell


Sujet :

Linux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 53
    Par défaut problème espaces dans shell
    Bonjour à tous,

    voilà dans le cadre d'un projet j'ai besoin de manipuler des noms de dossier et de fichiers et le problème se pose pour les noms contenant des espaces.

    Ainsi quand je fais un "find /home/meavy/Bureau " pour avoir tous les fichiers et dossiers contenus dans mon bureau certains dossiers avec des espaces posent problèmes. Les espaces sont interprétés comme des retours à la ligne. Par exemple, si dans mon bureau j'ai un fichier qui s'appelle "le chat gris" quand j'execute le find je trouve :
    .
    .
    .
    .

    /home/meavy/Bureau/le
    chat
    gris

    .
    .
    .
    .

    j'ai essayé de faire la commande suivante :

    find /home/meavy/Bureau | sed "s/ /\\\ /g"

    pour récupérer le résultat suivant : /home/meavy/Bureau/le\ chat\ gris

    mais ça ne marche pas ...

    avez vous des astuces ou propositions pour résoudre ce souci.


    merci d'avance pour vos réponses.


    ps:je suis sous mandriva et je developpe sous shell bash.

  2. #2
    Membre émérite
    Avatar de Celelibi
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 087
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 087
    Par défaut
    Le problème n'est pas à chercher dans find, mais dans le programme de traitement.
    Je suppose que c'est un script shell, tu dois certainement faire un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for f in $(find /home/blah/truc); do
        echo '->'$f'<-';
    done
    Moi je te conseillerai plutôt de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    find /home/blah/truc | while read f; do
        echo '->'$f'<-';
    done
    En effet, read va lire une ligne et pas un "token".

    Sinon, tu peux aussi modifier la variable IFS qui continent le caractère de séparation des "tokens".

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 53
    Par défaut
    salut

    merci pour ta réponse mais ça ne marche pas ... ça me retourne un truc du genre :

    .
    .
    .
    .

    /home/meavy/Bureau/le->
    <-chat
    <-gris

    .
    .
    .
    .




    heeeelp

  4. #4
    Membre émérite
    Avatar de Celelibi
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 087
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 087
    Par défaut
    La commande find te donne bien un nom de fichier par ligne ?
    Tu utilise bien bash comme shell ?
    Tu as bien testé l deuxième commande que je t'ai proposé et pas la première ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 53
    Par défaut
    oui je suis sous bash et j'ai testé les deux commandes elles me retournent la meme chose :s

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 41
    Par défaut
    Salut,

    Tu écris:
    je fais un "find /home/meavy/Bureau " pour avoir tous les fichiers et dossiers contenus dans mon bureau
    Pour cela il existe la commande: ls

    Ainsi, chez moi il me suffit de faire:

    pour obtenir
    nom de fichier 1
    fichier_2
    etc

    ou encore:

    pour obtenir
    nom\ de\ fichier\ 1
    fichier_2
    etc

    Mais que veux tu faire exactement, car peut etre en détaillant plus, il y aurait une solution adéquate. Peux tu préciser le "Manipuler" des fichiers de ton premier poste.

    @+ bonne contiuation

Discussions similaires

  1. Problème espace dans flux XML lors de unmarshal : outils JDOM et BorlandXML
    Par alextomas dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 29/07/2011, 16h41
  2. Problème espace dans Spool vers fichier texte
    Par hatimov dans le forum PL/SQL
    Réponses: 7
    Dernier message: 25/06/2010, 17h10
  3. Problème espace dans fichier
    Par slockstone dans le forum Linux
    Réponses: 2
    Dernier message: 16/12/2008, 23h02
  4. Problème espaces dans nom de fichier
    Par Mygush dans le forum Général Java
    Réponses: 9
    Dernier message: 31/10/2008, 12h21
  5. Problème espaces dans requête
    Par dl_jarod dans le forum ASP
    Réponses: 12
    Dernier message: 12/10/2005, 12h02

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