Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 03/10/2013, à 08:46

atis

[Résolu] rm -r *.log ne marche pas

Bonjour,

  Je suis sous ubuntu 12.04. Je veux enlever dans un répertoire, et dans tous ses sous-répertoires, les fichiers dont l'extension est "log". Je tape donc dans un terminal (je suis dans le bon répertoire)

rm -r *.log

et j'obtiens comme réponse qu'il n'y a pas de tel fichier. Il n'y en a effectivement pas dans le répertoire lui-même, mais il y en a dans les sous-répertoires (j'ai vérifié !). J'ai essayé

rm -r "*.log"

mais c'est pareil.

Est-ce que quelqu'un peut m'aider ?

Merci !

Atis

Dernière modification par atis (Le 03/10/2013, à 18:29)

Hors ligne

#2 Le 03/10/2013, à 09:03

Compte anonymisé

Re : [Résolu] rm -r *.log ne marche pas

Salut

Il faudrait te positionner sur le répertoire "père" et taper la commande :
find .  -name "*.log" -type f -exec rm {} \;

@+

#3 Le 03/10/2013, à 09:10

Postmortem

Re : [Résolu] rm -r *.log ne marche pas

Salut,
Le rm -r permet d'être récursif si tu indiques un/des répertoires en paramètre.
Autre solution sans le find :

shopt -s globstar
rm "/répertoire/de/départ"/**/*.log

S'il y a des fichiers *.log commençant par . (point), rajouter shopt -s dotglob avant le rm


Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »

Hors ligne

#4 Le 03/10/2013, à 10:34

atis

Re : [Résolu] rm -r *.log ne marche pas

Bonjour,

  Merci pour vos réponses. J'aimerais juste comprendre un truc : à quoi sert le " \; " à la fin de la commande avec find ?

Et shopt ? Je ne trouve rien dans le man à ce propos.

Et enfin, si je comprends bien la réponse de postmortem, la commande

rm -r ./*.log

devrait marcher ?

Merci, c'est juste pour comprendre.

Atis

Hors ligne

#5 Le 03/10/2013, à 10:37

Compte anonymisé

Re : [Résolu] rm -r *.log ne marche pas

La commande find est très riche et "un peu spéciale" et ce ";" est indispensable.
Tu peux tester avec :
find .  -name "*.log" -type f -exec ls -l {} \;  pour lister les fichiers. Sinon tu as le man find --> bon courage tongue

#6 Le 03/10/2013, à 10:53

pingouinux

Re : [Résolu] rm -r *.log ne marche pas

Bonjour,

atis #4 a écrit :

Et shopt ? Je ne trouve rien dans le man à ce propos.

Voir man bash, rubrique SHELL BUILTIN COMMANDS.
Pour un mode d'emploi simplifié :

help shopt

Hors ligne

#7 Le 03/10/2013, à 11:41

Postmortem

Re : [Résolu] rm -r *.log ne marche pas

atis a écrit :

Et enfin, si je comprends bien la réponse de postmortem, la commande

rm -r ./*.log

devrait marcher ?

Merci, c'est juste pour comprendre.

Atis

Cela devrait marcher si tu as un/des dossiers qui correspondent à ./*.log. Mais si cela ne correspond à rien ou à des fichiers, cela ne fonctionne pas.

Admettons que dans ton dossier, tu as 2 fichiers *.log : titi.log et toto.log. La commande rm -r ./*.log est transformée par le shell en rm -r ./titi.log ./toto.log avant d'être exécutée et donc, seul ces 2 fichiers sont effacés.

Maintenant, si dans ton dossier tu as un fichier titi.log et un sous-dossier répertoire.log, la commande rm -r ./*.log est transformée par le shell en rm -r ./titi.log ./répertoire.log avant d'être exécutée et donc, le fichier titi.log sera supprimé, le dossier répertoire.log quand à lui sera supprimé ainsi que TOUT son contenu (sans l'option -r, rm n'aurait pas voulu supprimer ce sous-dossier)

Si dans ton dossier tu n'as rien qui correspond à *.log, alors le shell laisse *.log tel quel et donc, la commande rm essaierais d'effacer un fichier/dossier se nommant *.log tel quel. Cela produirait une erreur disant qu'il n'y a pas de fichier/dossier se nommant *.log


Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »

Hors ligne

#8 Le 03/10/2013, à 18:28

atis

Re : [Résolu] rm -r *.log ne marche pas

Merci postmortem pour cette explication très claire.

J'ai nettoyé !

Atis

Hors ligne