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 :

Espaces dans les noms de dossiers


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 22
    Par défaut Espaces dans les noms de dossiers
    bonjour,

    Je souhaite archiver les dossiers vidéos de plusieurs langages.

    $langage/Vidéos langage/tutos autres tutos/

    mais le problème, c'est que dès lors qu'un dossier contient un espace, j'ai une erreur : tar: autres tutos/.tar.xz : fichier modifié pendant sa lecture

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    for langage in `ls`; do
        if [[ -d $langage ]]; then
           cd $langage/Vidéos\ $langage/
           for video in `ls`; do
               pwd
               if [[ -d $video ]]; then
                   tar -cJf $video.tar.xz $video
                   rm -Rf $video
               fi
           done
        cd ~/Documents/tests/14
        fi
    done
    vous avez une idée pour pallier à ça ?

    merci

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

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

    mets des guillemets autour des variables, toujours !

    et N'UTILISE PAS ls DANS UN SCRIPT !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for d in chemin/*/; do echo "$d est un répertoire"; done
    surtout, ne tente pas d'utiliser une boucle for sur la sortie d'une commande.

    et si tu n'as pas l'usage des fonctions avancées de [[, contente-toi de test.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    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 835
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    et N'UTILISE PAS ls DANS UN SCRIPT !
    Bonjour

    Un jour, un jour je trouverai une situation qui impose l'utilisation du ls dans un script...
    This is my quest, my holy graal !!!

    PS: je l'avais trouvée pour sh mais bash est arrivé avec ses possibilités accrues et ma situation est devenue caduque...

    Citation Envoyé par zoscoy Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
           cd $langage/Vidéos\ $langage/
           ...
        cd ~/Documents/tests/14
    Evite ce genre d'ignominie en essayant de penser au jour où ton dossier de travail deviendra fluctuant. Surtout que le shell est plein de ressources pour ça...
    1) mémoriser le dossier courant
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    dir=$(pwd)
    cd autre_rep
    ...
    cd "$dir"

    2) utiliser un sous-processus
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ...travail dans dossier X...
    (  # Création d'u sous-processus indépendant
        cd autre_rep
       ... travail ...
    ) # Hop, je suis revenu dans le dossier X

    3) utiiliser pushd et popd, le must du must
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    ...travail dans dossier X...
    pushd dossierY
    ... travail dns dossier Y...
    pushd dossierZ
    ... travail dns dossier Z...
    pushd dossierA
    ... travail dns dossier A...
     
    popd  # retour au dossier Z
    popd  # retour au dossier Y
    popd  # retour au dossier X
    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. #4
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 658
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 658
    Par défaut
    mémoriser le dossier courant
    bash sait faire ça (±), par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $ pwd
    /home/user/unRepertoire
    $ cd ~; pwd
    /home/user/
    $ cd ~-; pwd
    /home/user/unRepertoire
    pour ma part, il est très rare que je change de répertoire dans un script.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 102
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Un jour, un jour je trouverai une situation qui impose l'utilisation du ls dans un script...
    Que préconises-tu pour récupérer le dernier fichier (ou répertoire) à la place de (l'horrible):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    last_file=$(ls -t | head -1)
    J'imagine que N_BaH doit avoir la réponse...

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 129
    Par défaut
    Yop !
    Citation Envoyé par jack-ft Voir le message
    Que préconises-tu pour récupérer le dernier fichier (ou répertoire) à la place de (l'horrible):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    last_file=$(ls -t | head -1)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for d in $1/*; do :; done; echo $d | cut -d"/" -f2

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

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

    tu perds le tri comme ça : le shell trie les fichiers par ordre alphabétique, et non en fonction de la date de leur dernière modification.

    mais, de toutes façons, le problème d'utiliser ls demeurera si le dernier fichier contient un alinea.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

Discussions similaires

  1. fontion : Gestion des espaces dans les noms de dossier
    Par _stephnane_ dans le forum Scripts/Batch
    Réponses: 0
    Dernier message: 10/11/2010, 10h56
  2. support des espaces dans les noms de fichiers
    Par menuge dans le forum Langage
    Réponses: 9
    Dernier message: 25/10/2006, 09h02
  3. suppression des espaces dans les noms de fichiers
    Par menuge dans le forum Général Python
    Réponses: 8
    Dernier message: 22/10/2006, 12h01
  4. [BATCH] Espaces dans les noms de fichiers :|
    Par andlio dans le forum Windows
    Réponses: 1
    Dernier message: 03/08/2006, 03h42
  5. Smbclient et espace dans les noms
    Par jean-jacques varvenne dans le forum Réseau
    Réponses: 4
    Dernier message: 30/11/2005, 18h29

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