Problème de réalisation d'un petit script

Fermé
speed - 9 oct. 2007 à 00:31
 speed - 11 oct. 2007 à 19:53
Bonjour,
petit problème voila je dois faire un petit script en shell afin de supprimer un type de fichier tout en affichant le nombre de ligne comment faire j'ai commençé mais je suis bloqué

#!/bin/ksh

cd /var/spool/client #repertoire ou je me positionne
find . -mtime +60 |wc -l #je recherche dans le repertoire postionné tous les fichiers de plus de 60 jours pour afficher leur ligne

question comment faire un enchainement de commande par exemple aprés recupération du nombre de lignes j'aimerais faireun rm de ses fichiers trouvé ça ne marche pas ça find . -mtime +60 |wc -l |rm -f
puis enchainé avec un echo disant après l'operation 'process réalisé on a effacé tant numéro de ligne

8 réponses

lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
9 oct. 2007 à 06:14
Salut,
var=$(find  /var/spool/client -mtime -60 -exec rm -vf {} \; | wc -l) && echo "Suppression effectuée! $var fichiers supprimés"
Attention avec l'option -f
je te conseil de teste la commande sur un répertoire bidon
0
var=$(find /var/spool/client -mtime -60 -exec rm -vf {} \; | wc -l) && echo "Suppression effectuée! $var fichiers supprimés"

merci pour ta proposition c'est cool lami20j

j'aimerais savoir comment rediriger var=$(find /var/spool/client -mtime -60 -exec rm -vf {} \; | wc -l) dans un fichier pour garder une trace des lignes affichées avant de faire mon echo
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
9 oct. 2007 à 13:54
Salut,
var=$(find /var/spool/client -mtime -60 -exec rm -vf {} \; | tee fichier | wc -l)
;-))
0
Déjà merci beaucoup à lami20j et jipicy, mon problème n'est pas encore vraiment résolu mais on avance merci.

juste une question à qui peut me dépatouiller dans ce probleme donc d'après la ligne :

var=$(find /var/spool/client -mtime -60 -exec rm -vf {} \; | tee fichier | wc -l)

je cherche dans le chemin : (find /var/spool/client ) les fichiers de -60 jours j'excute un rm ... jusqu'a là ok

Mais comment faire pour enchainer l'affichage des lignes après rm pour rediriger le nombre de fichier effacer dans un fichier puis l'afficher en meme temps par

un echo en disant que l'opération c'est bien faite et affichant le nombre de ligne qui s'est executé ( && echo "Suppression effectuée! $var fichiers supprimés"

en parallèle je dois génére un fichier qui rentre les erreurs style (2>> erreurs)

gros bisous à la personne qui peut me proposer une solution merci à tous et vive comment ça marche c'est génial ce site
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
9 oct. 2007 à 20:51
C'est une seule ligne.
Les fichiers sont enregistrer dans le répertoire parent, à toi de modifier leur chemin.
fic.supp contient les fichiers supprimer
fic.error.supp contient les ereurs
var=$(find . -mtime -60 -exec rm -vf {} \; 2>> ../fic.error.supp | tee -a ../fic.supp | wc -l) && echo "Suppression effectuée. $var fichiers supprimés"
0
merci encore une nouvelle fois lami20j juste une question le ( tee -a ../fic.supp) ça va rentrer tous mes fichiers supprimés moi je veux juste rentrer dans le fichier le nombre de ligne ( wc -l) avec la date par exemple pour garder une trace (pas besoin de sauver tous mes fichier effacés).

dois je faire plutot : | wc -l | tee -a ../fic.supp) && etc... (parce que je veux afficher quand meme en parallèle le nombre de ligne de fichiers supprimés)

or si je fais ( | wc -l | tee -a ../fic.supp) le echo n'affichera plus wc -l comme ça sera redirigé dans un fichier.

comment faire alors ?
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
10 oct. 2007 à 05:53
var=$(find . -mtime +60 -exec rm -vf {} \; 2>> ../fic.error.supp | wc -l) && echo "$var - $(date +'%d/%m/%Y')" >> ../fic.supp && echo "Suppression effectuée. $var fichiers supprimés"
0
Bonjour,
merci pour ton aide ça m'aide vachement Mr lami20j
en faite là ta ligne est pas mal du tout sauf ça ne marche pas la redirection dans le fichier :

(echo "$var - $(date +'%d/%m/%Y')" >> ../fic.supp) je ne sais pas pourquoi (je ne suis pas obligé de mettre le chemin en entier du fichier si je suis déjà postionné dans le répertoire)

une autre question le programme doit évoluer un peu je dois mettre des codes retours a chaque test des fonctions pour voir si tout se passe bien du style j'ai une petite idée mais je ne sais pas comment m'y prendre.

voici un exemple à quoi j'aimerais que ça ressemble :

var=$(find . -mtime +60 -exec rm -vf {} \; 2>> ../fic.error.supp | wc -l)

coderetour=$?
if [ $ {coderetour} = "0" ]
then
echo " suppression $var le $(date +'%d/%m/%Y')" ok\n" >> /fic.supp
else
echo "\n erreur sur la suppression des fichiers >> fic.error.supp

fi

je suis perdu là comment imbriqué pour que ça marche , en plus mes fichiers rien ne se redirige dedans dois je les faire en variable
$ {fic.supp} et ${fic.error.supp}
car on veut une sorte de fichier log pour les erreurs et un fichier trace ou on enregistre la date et le nombre de fichier supprimé.

merci de votre aide.
0