FIND - Unix
Vesp'
-
jipicy Messages postés 41342 Statut Modérateur -
jipicy Messages postés 41342 Statut Modérateur -
Bonjour,
J'ai fait quelques petites recherches sans réelle réponse (peut-être que je cherche mal), mais j'aurais voulu savoir s'il était possible de faire un find sur plusieurs fichiers genre
find /bidule -name toto.txt tata.jpg titi.doc (etc) -exec rm -f
J'ai fait quelques petites recherches sans réelle réponse (peut-être que je cherche mal), mais j'aurais voulu savoir s'il était possible de faire un find sur plusieurs fichiers genre
find /bidule -name toto.txt tata.jpg titi.doc (etc) -exec rm -f
A voir également:
- FIND - Unix
- Find and mount - Télécharger - Récupération de données
- Ava find - Télécharger - Divers Utilitaires
- Unix scrabble ✓ - Forum loisirs/vie pratique
- Find junk files - Télécharger - Nettoyage
- Cannot find required map name - Forum BIOS
7 réponses
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 ?