FIND - Unix
Fermé
Vesp'
-
13 mars 2009 à 09:36
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 18 mars 2009 à 11:31
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 18 mars 2009 à 11:31
A voir également:
- FIND - Unix
- Ava find - Télécharger - Divers Utilitaires
- Couldn't find ds menu.dat ✓ - Forum Jeux vidéo
- Cannot find required map name - Forum BIOS
- Partition find and mount - Télécharger - Récupération de données
- The system cannot find any bootable devices - Forum BIOS
7 réponses
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
13 mars 2009 à 20:07
13 mars 2009 à 20:07
Salut,
find /bidule \( -name 'toto.txt' -o -name 'tata.jpg' -o -name 'titi.doc' \) -exec ...;-))
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
18 mars 2009 à 09:56
18 mars 2009 à 09:56
Re-
A vue de nez, deux ou trois petites choses...
C'est où l'une ou l'autre, mais pas les 2 !!!
Soit tu fais un cat sur le fichier et tu filtres les lignes au travers d'un pipe :
Ensuite concernant l'existence du fichier :
Et pour finir dans tes suppressions de fichiers de log et d'erreur, il manque le "{}" :
A vue de nez, deux ou trois petites choses...
#Sinon on lit le fichier cat $1 | while read line #On le parcourt ligne par ligne do ... done < $1
C'est où l'une ou l'autre, mais pas les 2 !!!
Soit tu fais un cat sur le fichier et tu filtres les lignes au travers d'un pipe :
cat $1 | while ... do ... donesoit tu tu fais une boucle "while" :
while read line #On le parcourt ligne par ligne do ... done <$1
Ensuite concernant l'existence du fichier :
#On teste si le fichier existe if [ ! -f $line ];Faudrait peut être indiquer le chemin non ? ([ ! -f ${2}/${line} ])
Et pour finir dans tes suppressions de fichiers de log et d'erreur, il manque le "{}" :
find . -mtime +15 -name 'erreur*' -print -exec rm {} \; find . -mtime +15 -name 'log*' -print -exec rm {} \;;-))
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Alors j'ai pondu un script Shell qui recoit en parametres un fichier texte contenant une liste de fichier et un nom repertoire. l'idée c'est de parcourir le fichier texte et de supprimer les fichiers un à un. Le truc j'ai que j'ai pas le moyen de tester et j'voulais etre sur de pas avoir faire de fautes alors si vous en voyez Merci de mes les indiquer ! :)
#!/bin/bash
#$1 << .txt qui contient une liste de fichiers à supprimer
#$2 répertoire où se trouvent les fichiers à supprimer
#Creation d'un fichier d'erreurs
> erreur`date +%Y%m%d`.txt
#Creation d'un fichier de log
> log`date +%Y%m%d`.txt
# Test existence fichier
if [ ! -e $1 ]; then
#S'il n'existe pas
echo -e "Le fichier $1 n'existe pas ! \n"
#on sort
exit 2
else
#Sinon on lit le fichier
cat $1 | while read line
#On le parcourt ligne par ligne
do
#Pour chaque ligne on supprime le nom du fichier $ligne dans le répertoire indiqué
find $2 -name $line -exec rm -f {} \;
#On teste si le fichier existe
if [ ! -f $line ]; then
#S'il existe on écrit dans le fichier de log
echo "Le fichier" $line "a bien été supprimé" >> log.txt
#S'il n'existe pas
else
#On écrit dans le fichier d'erreur
echo "Une erreur est survenue pour le fichier" $line >> erreur.txt
#Jusqu'a la fin du fichier
done < $1
fi
#On supprime les fichiers d'erreur de plus de 15jours
find . -mtime +15 -name 'erreur*' -print -exec rm \;
#On supprime les fichiers de log de plus de 15jours
find . -mtime +15 -name 'log*' -print -exec rm \;
#!/bin/bash
#$1 << .txt qui contient une liste de fichiers à supprimer
#$2 répertoire où se trouvent les fichiers à supprimer
#Creation d'un fichier d'erreurs
> erreur`date +%Y%m%d`.txt
#Creation d'un fichier de log
> log`date +%Y%m%d`.txt
# Test existence fichier
if [ ! -e $1 ]; then
#S'il n'existe pas
echo -e "Le fichier $1 n'existe pas ! \n"
#on sort
exit 2
else
#Sinon on lit le fichier
cat $1 | while read line
#On le parcourt ligne par ligne
do
#Pour chaque ligne on supprime le nom du fichier $ligne dans le répertoire indiqué
find $2 -name $line -exec rm -f {} \;
#On teste si le fichier existe
if [ ! -f $line ]; then
#S'il existe on écrit dans le fichier de log
echo "Le fichier" $line "a bien été supprimé" >> log.txt
#S'il n'existe pas
else
#On écrit dans le fichier d'erreur
echo "Une erreur est survenue pour le fichier" $line >> erreur.txt
#Jusqu'a la fin du fichier
done < $1
fi
#On supprime les fichiers d'erreur de plus de 15jours
find . -mtime +15 -name 'erreur*' -print -exec rm \;
#On supprime les fichiers de log de plus de 15jours
find . -mtime +15 -name 'log*' -print -exec rm \;
Merci pour ton aide jipicy !
Après correction, ça donne ça :
#!/bin/bash
#$1 << .txt qui contient une liste de fichiers à supprimer
#$2 répertoire où se trouvent les fichiers à supprimer
#Creation d'un fichier d'erreurs
> erreur`date +%Y%m%d-%kh%M `.txt
# Test existence fichier
if [ ! -e $1 ]; then
#S'il n'existe pas
echo -e "Le fichier $1 n'existe pas ! \n"
#on sort
exit 2
else
#Sinon on lit le fichier
while read line
#On le parcourt ligne par ligne
do
#Pour chaque ligne on supprime le nom du fichier $ligne dans le répertoire indiqué
find $2 -name $line -exec rm -f {} \;
#On teste si le fichier existe
if [ -f $2/$line ]; then
#On écrit dans le fichier d'erreur
echo "Une erreur est survenue pour le fichier" $line >> erreur.txt
fi
#Jusqu'a la fin du fichier
done < $1
fi
#On supprime les fichiers d'erreur de plus de 15jours
find . -mtime +15 -name 'erreur*' -print -exec rm {} \;
J'ai supprimé certaines choses (notamment le fichier de logs) qui me semblaient inutiles !
J'ai une derniere question pour
Faudrait peut être indiquer le chemin non ? ([ ! -f ${2}/${line} ])
les {} autour du nom du fichier et du chemin sont indispensables ?
Après correction, ça donne ça :
#!/bin/bash
#$1 << .txt qui contient une liste de fichiers à supprimer
#$2 répertoire où se trouvent les fichiers à supprimer
#Creation d'un fichier d'erreurs
> erreur`date +%Y%m%d-%kh%M `.txt
# Test existence fichier
if [ ! -e $1 ]; then
#S'il n'existe pas
echo -e "Le fichier $1 n'existe pas ! \n"
#on sort
exit 2
else
#Sinon on lit le fichier
while read line
#On le parcourt ligne par ligne
do
#Pour chaque ligne on supprime le nom du fichier $ligne dans le répertoire indiqué
find $2 -name $line -exec rm -f {} \;
#On teste si le fichier existe
if [ -f $2/$line ]; then
#On écrit dans le fichier d'erreur
echo "Une erreur est survenue pour le fichier" $line >> erreur.txt
fi
#Jusqu'a la fin du fichier
done < $1
fi
#On supprime les fichiers d'erreur de plus de 15jours
find . -mtime +15 -name 'erreur*' -print -exec rm {} \;
J'ai supprimé certaines choses (notamment le fichier de logs) qui me semblaient inutiles !
J'ai une derniere question pour
Faudrait peut être indiquer le chemin non ? ([ ! -f ${2}/${line} ])
les {} autour du nom du fichier et du chemin sont indispensables ?
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
18 mars 2009 à 11:05
18 mars 2009 à 11:05
Oui dans la mesure où il y a concaténation de variables, afin d'éviter toute ambigüité ou confusion possible...
Encore merci pour ton aide précieuse jipicy !
J'viens de faire mon premier script shell ! *Fiere* :D
J'viens de faire mon premier script shell ! *Fiere* :D
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
18 mars 2009 à 11:31
18 mars 2009 à 11:31
Y'a pô d'quoi, bonne continuation ;-))