Problème avec une commande shell ...

Résolu
InfoBoss -  
mamiemando Messages postés 33749 Date d'inscription   Statut Modérateur Dernière intervention   -

J'aimerais écrire une commande permettant de supprimer tous les liens (fichiers et répertoires) se trouvant sous une racine de fichiers donnée en paramètre sans utiliser la commande rm -r.

On m'a proposé cet exercice, mais j'arrive vraiment pas a savoir comment le faire sans la commande rm. Qqn pourrait m'aider ?

A voir également:

3 réponses

jee pee Messages postés 41351 Date d'inscription   Statut Modérateur Dernière intervention   9 668
 

j'irais voir du coté de find, avec les paramètres -depth, pour traiter les fichiers avant le répertoire, et -exec pour la commande à exécuter .

Bien évidemment, utiliser rm dans un script récursif, c'est naturellement très dangereux si on se trompe quelque part.

Après l'énoncé ne parle pas de supprimer fichiers et répertoires, mais de supprimer les liens. On peut alors utiliser la commande unlink et find -type l pour trouver les liens


2
jee pee Messages postés 41351 Date d'inscription   Statut Modérateur Dernière intervention   9 668
 
Salut, merci, bonjour, s'il vous-plait, etc ... sont des formules utiles, indispensables, dans la vie de tous les jours, et même sur un forum ;-)

Es-tu certain que l'interdiction concerne rm et pas juste rm -r, la commande récursive qui détruit toute une arborescence ? Car dans ce cas l'exercice consisterait à parcourir arborescence dans le script pour supprimer fichiers et répertoires.


0
InfoBoss
 

oui c'est exactement ça, je veux le faire sans la commande rm-r en concret, est-ce  que vous avez des idées?

0
mamiemando Messages postés 33749 Date d'inscription   Statut Modérateur Dernière intervention   7 871
 

Bonjour,

En complément à la réponse de jee pee #3, je pense que la commande que tu cherches à écrire est :

find /mon/dossier -type l -exec unlink {} \;

Cela permet d'exécuter la commande écrite entre -exec et \; pour chaque fichier trouvé en substituant paire d'accolades par le nom du fichier trouvé courant.

Bonne chance

0