Aller au contenu

Question bete


Eujd

Messages recommandés

Salut

Bon voila,

J'ai un petit problème sous ubuntu...

J'ai fait un script qui efface le contenu d'un repertoire temporaire.

J'ai voulu mettre un controle pour qu'il mdi'indique quand il n'y a pas de fichier dans le repertoire avec un if...

voila le code

#!/bin/bash

set -x

for File in `find /opt/lampp/htdocs/SEVE-G/file/download/temp/ -type f 2>/dev/null`;
do
if [ -n $File ];
then
echo No file to delete;
else echo $File;
fi;
done

J'ai essayé avec le -n et le -z or (avec le set -x) la seule chose qui s'affiche à l'écran c'est la commande find...

ce script fonctionne sous solaris... alors à moins qu'il y ait un bug avec le test -z et le -n...

ou alors je suis un boulay...

Lien vers le commentaire
Partager sur d’autres sites

Salut :)

En faite, t'as pas vraiment besoin de ça... sous linux, il existe un truc formidable du nom de tmprotate et tmpwatch qui efface automatiquement tout ce qui se trouve dans /tmp et qui a plus de 7 ou 10 jours (selon ta distrib...)

et t'as la même chose (logrotate et logwatch) qui font ça pour ton /var/log/

Lien vers le commentaire
Partager sur d’autres sites

Salut :)

En faite, t'as pas vraiment besoin de ça... sous linux, il existe un truc formidable du nom de tmprotate et tmpwatch qui efface automatiquement tout ce qui se trouve dans /tmp et qui a plus de 7 ou 10 jours (selon ta distrib...)

et t'as la même chose (logrotate et logwatch) qui font ça pour ton /var/log/

Le soucis c'est que ce n'est ps un répertoire temp "standard"

Lien vers le commentaire
Partager sur d’autres sites

Ce qui n'est pas un problème réellement :roll:

Sous ubuntu c'est tmpreaper

man tmpreaper pour voir comment ça fonctionne et ne pas oublier de lui spécifier le chemin du dossier.

Tu peux évidemment le mettre dans ton crontab pour qu'il le fasse tout seul tous les X jours ou tout les premier du mois, etc... Quand tu veux quoi :modoreussi:

Lien vers le commentaire
Partager sur d’autres sites

J'ai fait un script qui efface le contenu d'un repertoire temporaire.

J'ai voulu mettre un controle pour qu'il mdi'indique quand il n'y a pas de fichier dans le repertoire avec un if...

voila le code

#!/bin/bash

set -x

for File in `find /opt/lampp/htdocs/SEVE-G/file/download/temp/ -type f 2>/dev/null`;
do
if [ -n $File ];
then
echo No file to delete;
else echo $File;
fi;
done

Il faut toujours mettre des guillemets entre les crocher (donc if [ -n "$File" ] ) :modoreussi:

J'ai essayé avec le -n et le -z or (avec le set -x) la seule chose qui s'affiche à l'écran c'est la commande find...

C'est le "set -x" qui affiche la commande.

Et ton code n'affiche rien si le dossier ne contient pas de fichiers (même pas "No file to delete").

Pour le test, si tu veux utiliser un code similaire à ce que tu as mis, tu peux faire ça :

#!/bin/sh

find "$DIR" -type f 2>/dev/null | while read line
do
 echo "$line"
 # rm "$line"
done

Et sinon, tu peux utiliser directement l'option "-delete" de find :

 $ find "$DIR" -type f -delete

(Accessoirement pour vider un dossier, un petit rm -r "$DIR" marche aussi très bien :roll:)

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...