OVH Cloud OVH Cloud

Terminal : produire une liste de répertoires

73 réponses
Avatar
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

10 réponses

Avatar
olivier.marti
manet wrote:

Olivier Marti wrote:

Effecivement, mon script marche en sh et bash. Et tout ce que tu
racontes me rappelle des explications d'un des spécialistes ksh ici


nous autres, béotiens, on est bien content de constater que l'Unix,
c'est vraiment simple comme Bonjour...


Ben pour les choses simples à faire, il y a le Finder et la souris.
Quand on sort l'artillerie lourde, c'est toujours que ça ne va pas être
simple !!!

Mais il faut bien le dire : à la base, Unix est conçu par des gens pour
qui mettre un blanc dans un nom de fichier est une monstruosité ...
Alors quand on fait du shell (un peu) sur Unix et Linux depuis 15 ans,
l'arrivée sur le Mac est une vraie nouveauté !!!!

Mais je propose quand même l'exercice : j'ai une arborescence de dossier
assez profonde, et dans certaines branches il n'y a aucun fichier.
Comment détruire les dossier vides, puis leur parents qui deviendront
vides, etc ... ? A réaliser uniquement à la souris ...


Olivier


Avatar
Nicolas.MICHEL
Olivier Marti wrote:

Mais je propose quand même l'exercice : j'ai une arborescence de dossier
assez profonde, et dans certaines branches il n'y a aucun fichier.
Comment détruire les dossier vides, puis leur parents qui deviendront
vides, etc ... ? A réaliser uniquement à la souris ...


Bon, j'ai pas testé mais le man de rmdir dit ceci :

-p Each directory argument is treated as a pathname of which all
components will be removed, if they are empty, starting with the
last most component.

donc si j'ai tout compris, tu fais
cd /ton/dossier
rmdir -p .

et il va effacer tout ce qu'il peux, c'est à dire que les dossiers
vides.
Attention cependant, il peut y avoir des dossiers "presque vide", c'est
à dire avec juste un fichier .DS_Store qui pourrait être effacé avant,
éventuellement.

--
Nicolas

Avatar
blanc
Nicolas MICHEL wrote:

donc si j'ai tout compris, tu fais
cd /ton/dossier
rmdir -p .


ou simplement :
rmdir -p /ton/dossier

--
JiPaul.
/ /--/--// Jean-Paul Blanc
|/| L | quelquepart en (somewhere in)
/|| = ||| FRANCE

Avatar
yitzhak
Nicolas MICHEL wrote:

Bon, j'ai pas testé mais le man de rmdir dit ceci :

-p Each directory argument is treated as a pathname of which all
components will be removed, if they are empty, starting with the
last most component.

donc si j'ai tout compris, tu fais
cd /ton/dossier
rmdir -p .

et il va effacer tout ce qu'il peux, c'est à dire que les dossiers
vides.
Attention cependant, il peut y avoir des dossiers "presque vide", c'est
à dire avec juste un fichier .DS_Store qui pourrait être effacé avant,
éventuellement.


Et ...

find /point_de_depart -type d -exec rm -rf {} ;

... ça ne marche pas [1] ?

Y.

[1] pas testé ..
--
Yitzhak Isaac Goldstein
AADP's 'left-wing Jewish intellectual'
'fuck me, it's a torment to live amongst the nations'
http://www.chez.com/desmondcoughlan/

Avatar
Erwan David
(Yitzhak Isaac Goldstein) écrivait :

Nicolas MICHEL wrote:

Bon, j'ai pas testé mais le man de rmdir dit ceci :

-p Each directory argument is treated as a pathname of which all
components will be removed, if they are empty, starting with the
last most component.

donc si j'ai tout compris, tu fais
cd /ton/dossier
rmdir -p .

et il va effacer tout ce qu'il peux, c'est à dire que les dossiers
vides.
Attention cependant, il peut y avoir des dossiers "presque vide", c'est
à dire avec juste un fichier .DS_Store qui pourrait être effacé avant,
éventuellement.


Et ...

find /point_de_depart -type d -exec rm -rf {} ;

... ça ne marche pas [1] ?

Y.

[1] pas testé ..


Ah ben non là ça va te faire un rm -rf sur tous les répertoires présents
dans /point_de_depart, qu'ils soient vides ou pas...

--
Erwan


Avatar
yitzhak
Erwan David wrote:

(Yitzhak Isaac Goldstein) écrivait :

Nicolas MICHEL wrote:

Bon, j'ai pas testé mais le man de rmdir dit ceci :

-p Each directory argument is treated as a pathname of which all
components will be removed, if they are empty, starting with the
last most component.

donc si j'ai tout compris, tu fais
cd /ton/dossier
rmdir -p .

et il va effacer tout ce qu'il peux, c'est à dire que les dossiers
vides.
Attention cependant, il peut y avoir des dossiers "presque vide", c'est
à dire avec juste un fichier .DS_Store qui pourrait être effacé avant,
éventuellement.


Et ...

find /point_de_depart -type d -exec rm -rf {} ;

... ça ne marche pas [1] ?

Y.

[1] pas testé ..


Ah ben non là ça va te faire un rm -rf sur tous les répertoires présents
dans /point_de_depart, qu'ils soient vides ou pas...


Ah. Et c'est pas ce que l'on voulait? Mea culpa, j'avoue que j'ai
"parcouru" très vite les posts en amont ...

Y.

--
Yitzhak Isaac Goldstein
AADP's 'left-wing Jewish intellectual'
'fuck me, it's a torment to live amongst the nations'
http://www.chez.com/desmondcoughlan/



Avatar
yitzhak
Olivier Marti wrote:

Mais il faut bien le dire : à la base, Unix est conçu par des gens pour
qui mettre un blanc dans un nom de fichier est une monstruosité ...


Je confirme. Surtout parce que si je crée un fichier ou un dossier avec
le Finder, en y mettant des blancs, après il faut des antislash dans le
Terminal, et l'antislash sur un clavier Mac, c'est casse-cou*lle à
taper...

Y.

--
Yitzhak Isaac Goldstein
AADP's 'left-wing Jewish intellectual'
'fuck me, it's a torment to live amongst the nations'
http://www.chez.com/desmondcoughlan/

Avatar
FiLH
(Yitzhak Isaac Goldstein) writes:

Olivier Marti wrote:

Mais il faut bien le dire : à la base, Unix est conçu par des gens pour
qui mettre un blanc dans un nom de fichier est une monstruosité ...


Je confirme.


Moui. Disons qu'à l'époque on ne faisait pas vraiment mieux
ailleurs non plus.

Maintenant je gère sans pb des fichiers avec des blancs, faut juste
savoir coder correctement.


Surtout parce que si je crée un fichier ou un dossier avec
le Finder, en y mettant des blancs, après il faut des antislash dans le
Terminal, et l'antislash sur un clavier Mac, c'est casse-cou*lle à
taper...


Bahhh... keskifopalir !

FiLH

--
FiLH photography. A taste of freedom in a conventional world.
Web: http://www.filh.org e-mail
FAQ fr.rec.photo : http://frp.parisv.com/
Sitafoto la photo a Bordeaux : http://sitafoto.free.fr/


Avatar
yitzhak
Le Moustique wrote:


et l'antislash sur un clavier Mac, c'est casse-cou*lle à taper...

Y.


Mmmh? \\ (En voilà quelques-uns, tu n'as plus qu'à
copier-coller).... T'as essayé Maj.+Alt+slash?


Je n'ai pas dit que je ne savais pas le faire .. :-)

Mais j'ai gardé l'habitude ..

[sivan:~] desmond% ls /Volumes/shirele/maman/
how_to_use_nec_N342i_telephone.odt receipt_joan_baez_cd.odt

.. etc ..

Y.


--
Yitzhak Isaac Goldstein
AADP's 'left-wing Jewish intellectual'
'fuck me, it's a torment to live amongst the nations'
http://www.chez.com/desmondcoughlan/


Avatar
Nicolas.MICHEL
Yitzhak Isaac Goldstein wrote:

Je confirme. Surtout parce que si je crée un fichier ou un dossier avec
le Finder, en y mettant des blancs, après il faut des antislash dans le
Terminal, et l'antislash sur un clavier Mac, c'est casse-cou*lle à
taper...


Bin moi, ce qui me casse les cou*lles, c'est les dev incapables de coder
correctement, qui croient que parce que eux ils ne mettent pas d'espace
dans un nom, personne ne le fera.

Genre on a ici le logiciel ArcServe pour le backup de nos serveurs.
Bin il est incapable de sauvegarder un fichier dont le nom commence ou
finit par un espace, ou même un fichier sont le nom se termine par un
point. C'est le gros bug qui tache, les utilisateurs windose ne sont pas
affectés en général, l'explorateur windose est trop restrictif pour ça,
mais les mac users ont plus de liberté et donc tous les mois environ je
me tapes quelques centaines de fichiers à renomer. Le pire, c'est que le
script de renomage m'a pris une demi-journée alors que ça fait des
années que ce bug existe dans ArcServe et qu'ils ne l'ont toujours pas
corrigé. Et vu le prix du soft, on ne va pas en changer.

--
Nicolas