Bonsoir, Il faut en effet modifier l'IFS (internal file separator) pour manipuler les noms avec espaces.
#!/bin/sh # Se souvenir de l'ancien IFS OLDIFS=$IFS # Modification de l'IFS : retour à la ligne IFS=' ' # quelques opérations ... ... # On rétablit l'IFS IFS=$OLDIFS exit 0 Le 20:02:39 le 12 févr. 2013 , Sébastien MARQUE a écrit : > Bonsoir, > > L'origine de ton problème est l'IFS. > > Tu peux essayer de faire IFS=$(echo -ne "\n\b"): > > $ for i in foo bar baz; do mkdir "foo $i"; done > > $ IFS=$(echo -en "\n\b") > > $ for i in $(find . -mindepth 1 -type d); do echo $i; done > ./foo baz > ./foo bar > ./foo foo > > hope this helps. > > Séb > > Le 12/02/2013 19:01, Philippe Delavalade a écrit : > >Bonjour. > > > >J'ai un pépertoire qui contient des sous-répertoires ; dans chacun de ces > >derniers j'ai des fichiers sur lesquels je veux faire des opérations > >(toujours les mêmes). > > > >J'ai donc envisagé un script du genre > > > >for dir in `find -mindetph 1 -type d` > >do > > pushd "$dir" > > commande1 > > ... > > commanden > > popd > >done > > > >l'option -mindepth est là pour éviter les soucis avec ./ > > > >Seulement ça ne marche pas car certains des sous-répertoires comporte une > >espace (ou plusieurs) dans leur nom. > > > >J'ai créé à titre d'exemple, un répertoire machin dans lequel j'ai créé > >cinq sous-répertoires. > > > >voici ce que ça donne > > > >philippe:~/machin$ for dir in `find -mindepth 1 -type d` > >>do > >> echo "$dir" > >>done > >./blu > >blu > >blu > >./ble > >ble > >ble > >./bli > >bli > >bli > >./bla > >bla > >bla > >./blo > >blo > >blo > > > >En fait les noms sont « splités » et donc ça ne marche pas. > > > >Autre essai : > > > >philippe:~/machin$ for dir in "`find -mindepth 1 -type d`" > >>do > >> echo "$dir" > >>done > >./blu blu blu > >./ble ble ble > >./bli bli bli > >./bla bla bla > >./blo blo blo > > > >Là ça paraît mieux, j'ai bien les cinq sous-répertoires mais : > > > >philippe:~/machin$ for dir in "`find -mindepth 1 -type d`" > >>do > >> echo "$dir" > >> pushd "$dir" > >> echo "On est dans `pwd`" > >> popd > >>done > >./blu blu blu > >./ble ble ble > >./bli bli bli > >./bla bla bla > >./blo blo blo > >bash: pushd: ./blu blu blu > >./ble ble ble > >./bli bli bli > >./bla bla bla > >./blo blo blo: Aucun fichier ou dossier de ce type > >On est dans /home/philippe/machin > >bash: popd: pile de répertoire vide > > > >Là ça se passe comme s'il n'y avait qu'un seul sous-répertoire dans machin > >(une sorte de concaténation des cinq noms). > > > >J'ai, à tout hasard, essayé avec "${dir}" au lieu de "$dir" mais c'est la > >même chose. > > > >J'ai cherché dans abs-guide mais je n'ai rien trouvé comme idée nouvelle. > > > >J'ai bien la possibilité de faire un > >rename 's/ /#/g' * > >mais c'est du bricolage... > > > >Quelqu'un aurait-il une suggestion plus académique ? > > > >Merci d'avance. > > > > -- > Lisez la FAQ de la liste avant de poser une question : > http://wiki.debian.org/fr/FrenchLists > > Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe" > vers debian-user-french-requ...@lists.debian.org > En cas de soucis, contactez EN ANGLAIS listmas...@lists.debian.org > Archive: http://lists.debian.org/511a91cf.3010...@free.fr > -- ,--. Xavier Cartron : /` ) M2 MEFPC | `-' Debian user \_ jabber : thu...@jabber.fr -- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.org/fr/FrenchLists Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe" vers debian-user-french-requ...@lists.debian.org En cas de soucis, contactez EN ANGLAIS listmas...@lists.debian.org Archive: http://lists.debian.org/20130212205345.gb5...@lothlorien.lan