Faire un don ! | | style | statistiques | contactez-nous | plan | lettre d'information

Retourner aux forums || Retourner au forum Astuces.divers

Astuces.divers : [Terminal] Virer des fichiers superflus

Posté par gnap gnap (page perso, ) le 06 juin 2001
Il suffit de lancer la commande find /dossier \( -name "type_de_fichier" -or -name "autre_type" \) -exec rm -rfv {} \; En utilisant crond, on peut ainsi nettoyer régulièrement son disque en otant des core ou backups obsolètes.

> Lire le message (10 commentaires, moyenne: 0,9).  

Cette discussion est archivée, il n'est plus possible de laisser des commentaires.

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.

Re: Virer des fichiers superflus

Posté par François BOTTIN () le 17/12/2002 à 09:04. (lien). Évalué à 1.

Personnellement, j'ai l'habitude de mettre un test sur le type de fichier (-type f pour un fichier classique) et de passer par xargs pour ne lancer la commande à exécuter sur les fichiers qu'une seule fois (gain de temps non négligeable si le nombre de fichiers retourné est grand).

De plus, pour ne pas être gêné par les espaces dans les noms de fichiers, on peut séparer les noms par un caractère nul au lieu d'un espace (couple d'options -print0 et -0 pour find et xargs).

Ma commande ressemble donc à :
find /dossier -type f \( -name "foo" -or -name "bar" \) -print0 | xargs -0 rm -rfv

Enfin, je voudrais pointer les options -iname et -lname de find qui permettent respectivement de faire correspondre le nom de fichier avec une casse non significative et de faire correspondre le nom du fichier pointé par un lien symbolique (-ilname combine les 2). Exemple d'utilisation de -lname pour savoir quand /etc/init.d/iptables est appelé par init :
find /etc -type l -path '/etc/rc?.d/*' -lname '*/iptables'

Note : les options que je donne ne sont disponibles que pour les versions GNU de find...

  • [^]Re: Virer des fichiers superflus

    Posté par gnap gnap (page perso, ) le 21/12/2002 à 10:27. (lien). Évalué à 1.

    Apparement rm ne peut que supprimer un nombre limité de fichier en une seule ligne de commande.

    • [^]Re: Virer des fichiers superflus

      Posté par Tennis Prono (page perso, ) le 27/12/2002 à 17:14. (lien). Évalué à 1.

      Il suffit de faire un "xargs -n XXX" où XXX est un nombre pas trop petit mais pas trop long pour la ligne de commande (genre 50)

      --
      Pas de bureau 3d libre sans drivers libres!
      • [^]Re: Virer des fichiers superflus

        Posté par rgill () le 20/02/2003 à 12:37. (lien). Évalué à 2.

        Ha ça c'est de l'astuce !

        je me suis toujours emmerdé lorsque le nombre de fichiers était trop grand (pour rm ou d'autres commandes d'ailleurs). On pense à aller voir les man pour l'uilisation générale des commandes, mais des problèmes comme ça, on pense <2nd>qu'ils n'ont pas prévu ces crétins</2nd degre>, alors qu'il suffit de chercher un peu

        Merci pour ce complément d'astuce vraiment intéressant

        PS: je suis nouveau ici, et je vois des -1, des scores qui grimpent. Comment on met +/- à un commentaire ?

        • [^]Re: Virer des fichiers superflus

          Posté par Salagnac () le 19/05/2003 à 11:43. (lien). Évalué à 1.

          C'est un lourd débat qui agite DLFP depuis quelque temps. Pour avoir été nouveau aussi (il n'y a que quelques mois que je fréquente le site), je te préviens de suite : ne cherche pas de FaQ ou autre doc, comme aucun d'entre nous (je ne critique personne, pas taper, pas taper) ne s'est pris par la peau des fesses pour le faire, il n'y a, à peu de chose près, aucune explication nulle part sur le sujet.

          Mais en gros il suffit d'attendre (et de faire des commentaires pertinents)

          je te renvoie à http://linuxfr.org/~Salagnac/(...) où sont relatées mes aventures de bleu-bite bleu foncé (maintenant je peux voter, je suis donc bleu-bite bleu clair, arf)

          bon courage !

      • [+] [^]Re: Virer des fichiers superflus

        Posté par rgill () le 20/02/2003 à 12:37. (lien). Évalué à -1.

Re: Virer des fichiers superflus

Posté par Blackknight (Jabber id, page perso, ) le 11/06/2003 à 13:46. (lien). Évalué à 1.

sur BSD, il y a l'option -delete de find

Re: Virer des fichiers superflus

Posté par Jacque Chirac () le 02/09/2003 à 19:49. (lien). Évalué à 1.

Je trouve ça un-peu mal fichu ces commandes, je me demandais si il n'existe pas une commande qui permetrait d'executer n'importe quel commande de façon récurcive dans l'arborescence, style : "rec ./monRep rm -f *.o" tout simplement puisque rm n'est pas capable de le faire lui-même.

  • [^]Re: Virer des fichiers superflus

    Posté par Salagnac () le 06/11/2003 à 17:22. (lien). Évalué à 1.

    #!/bin/bash
    fonction_pas_recursive()
    {
    rm*.o
    }

    fonction_recursive()
    {
    for nom in `ls` ; do
    # aller dans tous les répertoires mais pas dans les liens symboliques
    if [ -d "$nom" -a ! -L "$nom" ] ; then
    cd "$nom"
    # le premier paramètre (donc $1) de fonction_recursive est le
    # nom de la fonction (ou du script, ou de la commande...) qui doit
    # être exécutée dans chaque répertoire
    $1
    # et, comme fonction_recursive est récursive, elle s'appelle elle-même.
    fonction_recursive $1
    cd ..
    fi
    done
    }

    et tu appelles gentiment "fonction_recursive fonction_pas_recursive" dans ton script

    (PS: desole' pour l'absence d'indentation. Le fait que <pre> bugge sur DLFP est tres amusant a mon gout)

  • [^]Re: Virer des fichiers superflus

    Posté par vic () le 08/05/2004 à 03:00. (lien). Évalué à 1.

    Je me trompe ou c'est exactement le but de cette astuce ? :/

    Pour faire ce que tu dis il suffit de faire :
    find -name "*.o" -exec rm -f {} \;

    Pour exécuter une commande sur tous les répertoires:
    find -type d -exec ./plop {} \;

    etc ....

Revenir en haut de page || Retourner aux forums || Retourner au forum Astuces.divers