Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 06/08/2014, à 12:56

funtim78

Supprimer une liste de dossiers temporaires

Bonjour,

Je souhaiterais supprimer l'ensemble des fichiers/dopssiers temporaires contenus sur un de mes disque dur.

Quand je fais find /chemin/vers/mon/dossier/ -name '*tmp', je trouve bien tous mes fichiers. Par contre, quand je rajout l'option "-delete" a la fin, j'ai l'erreur suivante:
find: cannot delete '/le/dossier/qui/fait/~#@{%£$)***.tmp' : Directory not empty

J'utiliserais bien rm, mais comme j'ai 200 occurences, c'est pas tres tres pratiques (a moins de faire un script?)
Du coup:

  • Connaissez vous un moyen pour supprimer des dossiers avec find ?

  • Quelle autre solution pourrqis-je utiliser? Je n'ai jamais fait de script bash jusqu'a maintenant, mais ca me semble etre la seule solution dans mon cas...

Merci!


PS: et c'est assez etonnant, je pensais que les .tmp etaient des fichiers et non des dossiers? Ceux ci ont été créés pas unison pour information.

Dernière modification par funtim78 (Le 06/08/2014, à 13:15)

Hors ligne

#2 Le 06/08/2014, à 13:06

pingouinux

Re : Supprimer une liste de dossiers temporaires

Bonjour,
C'est qu'un répertoire dont le nom se termine par .tmp n'est pas vide (donc doit contenir des fichiers dont le nom ne se termine pas par .tmp).

Hors ligne

#3 Le 06/08/2014, à 13:17

funtim78

Re : Supprimer une liste de dossiers temporaires

Ca je suis d'accord, mais du coup je fais comment pour supprimer les dossiers et ce qu'ils contiennent?

Hors ligne

#4 Le 06/08/2014, à 13:32

pingouinux

Re : Supprimer une liste de dossiers temporaires

Il faut d'abord t'assurer que les dossiers que tu vas supprimer ne contiennent pas de fichiers que tu veux conserver

find /.../répertoire_de_départ -depth -type d -name \*.tmp -exec tree {} \;

Si c'est bon, après avoir vérifié soigneusement, pour supprimer les dossiers et leur contenu

find /.../répertoire_de_départ -depth -type d -name \*.tmp -exec rm -r {} \;

Hors ligne

#5 Le 06/08/2014, à 13:37

funtim78

Re : Supprimer une liste de dossiers temporaires

Merci!

Sinon un :

find ./ -path '*.tmp*' -delete

a résolu le probleme!

Hors ligne

#6 Le 06/08/2014, à 14:00

pingouinux

Re : Supprimer une liste de dossiers temporaires

Si ta commande initiale n'a pas marché, je ne vois pas pourquoi celle en #5 a plus de raison de marcher. Il doit y avoir autre chose.

Hors ligne

#7 Le 06/08/2014, à 15:10

funtim78

Re : Supprimer une liste de dossiers temporaires

Je pense que l'argument path permet de supprimer d'abord les contenus des dossiers, qui peuvent alors être supprimés une fois vidés?
Je n'ai rien fait d'autre qui aurait pu avoir un impact...

Dernière modification par funtim78 (Le 06/08/2014, à 16:43)

Hors ligne

#8 Le 06/08/2014, à 15:33

pingouinux

Re : Supprimer une liste de dossiers temporaires

Je pense que l'argument path permet de suprrimer d'abord les contenus des dossiers

C'est l'argument -depth qui permet de parcourir l'arborescence à partir du bas, et il est automatiquement activé avec -delete.
Avec -path, il faut donner le chemin du fichier (ou répertoire) jusqu'au répertoire de départ, contrairement à -name auquel on fournit le "basename".

Hors ligne

#9 Le 06/08/2014, à 15:51

tiramiseb

Re : Supprimer une liste de dossiers temporaires

Salut,

pingouinux a écrit :

Si ta commande initiale n'a pas marché, je ne vois pas pourquoi celle en #5 a plus de raison de marcher. Il doit y avoir autre chose.

Avec « -path *.tmp* », find va matcher tous les fichiers, pas seulement les répertoires. Du coup il va supprimer les fichiers un à et et non les répertoires et leurs contenus...

Mais ça va aussi matcher un éventuel fichier nommé "fichier-important.tmpoupas".

Dernière modification par tiramiseb (Le 06/08/2014, à 15:52)

Hors ligne

#10 Le 06/08/2014, à 16:02

pingouinux

Re : Supprimer une liste de dossiers temporaires

Ah oui, je n'avais pas remarqué le dernier * dans '*.tmp*'. Ça explique tout, et du coup, -path a pu faire des dégâts, comme le dit tiramiseb.

Édité :
Avec -path, toute l'arborescence d'un répertoire nommé quelque_chose.tmpautre_chose sera supprimée, quel que soit son contenu.

Dernière modification par pingouinux (Le 06/08/2014, à 16:32)

Hors ligne