Suppression fichiers ubuntu [Résolu]

Signaler
-
Messages postés
29784
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
4 mai 2021
-
Bonjour,
Comment effacer dans un répertoire et ses sous répertoires les fichiers qui ont la même extension .log par exemple
Merci


Configuration: Macintosh / Firefox 88.0

2 réponses

Messages postés
29784
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
4 mai 2021
7 083
Bonjour,

Il suffit de lister les fichiers situés dans ce dossier avec la commande
find
, filtrer les fichiers concernés avec
grep
et réinjecter le tout dans la commande
rm
à l'aide de
xargs
. Avant de supprimer avec
rm
de lancer juste le début de la commande, ce qui permettra de vérifier que tu t'apprêtes à supprimer ce que tu penses :

cd /le/bon/dossier
find | grep "\.log$"


Si c'est bon :

find | grep "\.log$" | xargs rm -f


Pour aller plus loin : toutes les commandes sous linux sont documentées dans leur manuel. Par exemple pour comprendre comment fonctionne la commande
grep
, il suffit de taper dans un terminal la commande
man grep
. Le manuel permet de comprendre quelles options existent, ce qu'elles signifient, à quoi correspondent les paramètres et comment les définir. En l'occurrence, la commande
grep
permet de conserver uniquement les lignes qui satisfont une expression rationnelle (= expression régulière). En l'occurrence, l'expression rationnelle
"\.log$"
signifie "le caractère '.', suivi des caractères log, et $ signifie que le motif doit apparaître en fin de ligne.

Bonne chance
Merci mamiemando,
J'ai continué à chercher et j'ai trouvé cette solution qui marche aussi :

find ./Documents -type f -name "*.log" -exec rm -f {} "+"

MarcB
Messages postés
29784
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
4 mai 2021
7 083
Bonjour Marc,

Oui tout à fait ! Personnellement je suis plus de l'école
find ... | grep ... | xargs ...
car
grep
laisse la possibilité de définir des filtres plus évolués (et aussi parce que je trouve le
{}
de
find
un peu abscons). Pour ton cas particulier, n'utiliser que
find
est parfaitement correcte.

Merci pour ton retour et bonne continuation :-)