Script de suppression d'arborescence
Fermé
webotech
Messages postés
1
Date d'inscription
jeudi 11 février 2016
Statut
Membre
Dernière intervention
11 février 2016
-
Modifié par webotech le 11/02/2016 à 08:57
mamiemando Messages postés 33088 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 30 avril 2024 - 15 févr. 2016 à 10:44
mamiemando Messages postés 33088 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 30 avril 2024 - 15 févr. 2016 à 10:44
A voir également:
- Script de suppression d'arborescence
- Script vidéo youtube - Guide
- Forcer suppression fichier - Guide
- Suppression page word - Guide
- Suppression compte instagram - Guide
- Suppression cookies - Guide
2 réponses
mamiemando
Messages postés
33088
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
30 avril 2024
7 751
11 févr. 2016 à 10:00
11 févr. 2016 à 10:00
Le bash n'est pas très compliqué, et tu peux tester l'effet de chaque commande dans un shell :
- pour lister des fichiers tu as la commande
- dans ton cas lister le critère de choix des fichiers se fait facilement
- la commande
- enfin l'opérateur $(...) permet d'injecter le résultat d'un commande dans une autre.
- une boucle
- au besoin la commande
Je te conseille de travailler avec un script à part (mettons
Une fois le fichier créé :
Voici un début de squelette (il faut corriger le find)
1) Commence par trouver le
https://www.developpez.net/forums/d1045062/systemes/linux/administration-systeme/chercher-fichiers-crees-entre-dates/
2) Injecte ta commande
Ensuite ton cron doit simplement appeler ce fichier aux heures voulues.
Bonne chance
- pour lister des fichiers tu as la commande
ls(
ls -lnotamment pour avoir la date)
- dans ton cas lister le critère de choix des fichiers se fait facilement
find(voir option
-mtime)
- la commande
rm -fsupprime un fichier (
rm -rfpour un dossier)
- enfin l'opérateur $(...) permet d'injecter le résultat d'un commande dans une autre.
- une boucle
forcombinée avec un seq permet d'itérer facilement sur les dossiers utilisateurs
- au besoin la commande
echopermet d'afficher quelque chose
Je te conseille de travailler avec un script à part (mettons
/home/toto/script.sh) et de faire tes tests à partir de là
Une fois le fichier créé :
cd /home/toto.sh
chmod a+x script.sh
./script.sh
Voici un début de squelette (il faut corriger le find)
#!/bin/bash dir=/home/toto/mail for dossier in $(ls -1 $dir) do find ... $dossier done
1) Commence par trouver le
findqui va bien (avec des chemins absolus)
https://www.developpez.net/forums/d1045062/systemes/linux/administration-systeme/chercher-fichiers-crees-entre-dates/
2) Injecte ta commande
finddans
rm:
rm $(find ...)
Ensuite ton cron doit simplement appeler ce fichier aux heures voulues.
Bonne chance
11 févr. 2016 à 20:02
inutile d'utiliser , cf l'action -exec de find
Par ailleurs, j'ai tendance à dire que si tu utilises une boucle dans un script bash, c'est que tu as loupé quelque chose. Il n'existe quasiment aucun cas trivial où tu ne peux pas remplacer la boucle par une simple commande.
12 févr. 2016 à 11:52
1) Il est effectivement possible d'utiliser -exec dans ce cas précis. Mais pour moi c'est juste un détail syntaxique (ça ne changera rien en terme de performances). L'avantage de l'opérateur ou c'est qu'il n'est pas limités à .
2) Je suis d'accord qu'un bien placé sera toujours plus rapide qu'un et qu'il faut donc privilégier la première solution. Mais si existe, c'est qu'il y a une vraie raison et notamment pas mal de cas triviaux qui ne me paraissent pas faisable autrement.
Notamment :
- les itérations sur une liste arbitraires
- plusieurs boucles imbriquées :
Là où je te rejoins c'est que si c'est résolu par une commande et que le traitement est simple, un peut faire l'affaire. Dans cet exemple, ce qui serait le "corps" du est simple, donc ça va :
... mais dès qu'il devient compliqué (par exemple parce qu'ils contient plusieurs instructions, des tests, etc...), c'est au mieux illisible, voire au pire pas possible (typiquement si tu as besoin de faire ).
12 févr. 2016 à 17:12
En fait il n'y a même pas besoin de l'action -exec puisqu'il existe -delete ...
15 févr. 2016 à 10:44