Terminal : produire une liste de répertoires

Le
olivier.marti
Bonjour,

Je souhaite travailler sur une liste de répertoires, avec un script ksh
du genre :

LISTE=$( find . -type d -print )

for DIR in ${LISTE}
do
cd "${DIR}"


Mais dans ma liste de répertoire certains noms contiennent des blancs.
Le 'for' les considère comme des séparateurs, et ça ne vas pas du tout !

Comment faire ?

Olivier
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 8
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
laurent.pertois
Le #2285651
Olivier Marti
Mais dans ma liste de répertoire certains noms contiennent des blancs.
Le 'for' les considère comme des séparateurs, et ça ne vas pas du tout !


Je vais dire certainement une grosse bêtise, mais ça :

for DIR in "${LISTE}"

ça ne suffirait pas ? (pas testé, j'avoue)

--
Politically Correct Unix - UTILITIES
The "touch" command has been removed from the standard distribution due
to its inappropriate use by high-level managers.

olivier.marti
Le #2285611
Laurent Pertois
Olivier Marti
Mais dans ma liste de répertoire certains noms contiennent des blancs.
Le 'for' les considère comme des séparateurs, et ça ne vas pas du tout !


Je vais dire certainement une grosse bêtise, mais ça :


Oui ;-)


for DIR in "${LISTE}"

ça ne suffirait pas ? (pas testé, j'avoue)


Il prend tout LISTE pour un seul mot. Il ne découpe plus du tout ... !!!

Olivier


Eric Levenez
Le #2311591
Le 22/05/07 15:39, dans « Olivier Marti »
Je souhaite travailler sur une liste de répertoires, avec un script ksh
du genre :

LISTE=$( find . -type d -print )

for DIR in ${LISTE}
do
cd "${DIR}"
...


Mais dans ma liste de répertoire certains noms contiennent des blancs.
Le 'for' les considère comme des séparateurs, et ça ne vas pas du tout !

Comment faire ?


Je ferais un truc du genre :

find . -type d -print | while read DIR
do
cd "$DIR"
...

--
Éric Lévénez -- Unix is not only an OS, it's a way of life.

laurent.pertois
Le #2311581
Olivier Marti
ça ne suffirait pas ? (pas testé, j'avoue)


Il prend tout LISTE pour un seul mot. Il ne découpe plus du tout ... !!!


Ah ben voilà, ça m'apprendra à ne pas tester :-D

Désolé, je débute...

--
Politically Correct Unix - UTILITIES
The "touch" command has been removed from the standard distribution due
to its inappropriate use by high-level managers.


patpro ~ patrick proniewski
Le #2311571
In article (Laurent Pertois) wrote:

Olivier Marti
ça ne suffirait pas ? (pas testé, j'avoue)


Il prend tout LISTE pour un seul mot. Il ne découpe plus du tout ... !!!


Ah ben voilà, ça m'apprendra à ne pas tester :-D

Désolé, je débute...


a mon avis, le plus simple c'est --exec dans le find.

patpro

--
http://www.patpro.net/



patpro ~ patrick proniewski
Le #2311561
In article Eric Levenez
Je ferais un truc du genre :

find . -type d -print | while read DIR
do
cd "$DIR"
...


ha ho, bien vu, m'apprendra à réfléchir ça.

patpro

--
http://www.patpro.net/

laurent.pertois
Le #2311541
patpro ~ patrick proniewski
a mon avis, le plus simple c'est --exec dans le find.


Ca, j'y ai bien pensé en voyant ce que proposait Èric mais comme je me
suis gaufré une fois, je me le suis gardé :-D

--
Politically Correct Unix - UTILITIES
The "touch" command has been removed from the standard distribution due
to its inappropriate use by high-level managers.

filh
Le #2311511
Eric Levenez
Le 22/05/07 15:39, dans
Je souhaite travailler sur une liste de répertoires, avec un script ksh
du genre :

LISTE=$( find . -type d -print )

for DIR in ${LISTE}
do
cd "${DIR}"
...


Mais dans ma liste de répertoire certains noms contiennent des blancs.
Le 'for' les considère comme des séparateurs, et ça ne vas pas du tout !

Comment faire ?


Je ferais un truc du genre :

find . -type d -print | while read DIR
do
cd "$DIR"
...


Je ferais du genre
do
(cd "*DIR"
....

)
Histoire de revenir au répertoire de départ avant le prochain cd...

FiLH

--
Le fondement du constat bourgeois, c'est le bon sens, c'est-à-dire
une vérité qui s'arrête sur l'ordre arbitraire de celui qui la parle.
Roland Barthes.
http://www.filh.org


olivier.marti
Le #2311491
Laurent Pertois
patpro ~ patrick proniewski
a mon avis, le plus simple c'est --exec dans le find.


Ca, j'y ai bien pensé en voyant ce que proposait Èric mais comme je me
suis gaufré une fois, je me le suis gardé :-D



--exec c'est pour faire une commande simple derrière, type rm, file, etc
... Mais si on a beaucoup de choses à faire derrière ?

Olivier


olivier.marti
Le #2311501
Eric Levenez
Le 22/05/07 15:39, dans
Je souhaite travailler sur une liste de répertoires, avec un script ksh
du genre :

LISTE=$( find . -type d -print )

for DIR in ${LISTE}
do
cd "${DIR}"
...


Mais dans ma liste de répertoire certains noms contiennent des blancs.
Le 'for' les considère comme des séparateurs, et ça ne vas pas du tout !

Comment faire ?


Je ferais un truc du genre :

find . -type d -print | while read DIR
do
cd "$DIR"
...


Il ne se passe rien :

#!/bin/ksh
find . -type d -print | while read DIR
do
echo "$DIR"
cd "${DIR}"
pwd
done
+ read DIR
+ find . -type d -print


Comprend pas ... J'ai fait quelques essais avec des parenthèses, des
redirections, etc ... Rien ne marche !!! (même avec des répertoires
blanc dans le nom).

Bon, "Unix dans sa coquille de noix" est resté au boulot ....

Olivier


Publicité
Poster une réponse
Anonyme