[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: rm -fr * (sauf : fichier1, Fichier2...)



Bonjour,

Un tout grand merci, j'ai passé quelque heures a découvrir le zsh et
l'ai maintenant sur un autre ordi.

--
Benoit


Le 12 juin 2018 à 00:15, Marc Chantreux <mc@unistra.fr> a écrit :
> salut,
>
> On Mon, Jun 11, 2018 at 10:55:23PM +0200, Benoit B wrote:
>> Comment fait-on pour supprimer tout (rm -fr *) sauf une liste de fichiers ?
>
> si tu utilises zsh avec l'option extendedglob, tu peux mettre des motifs
> d'exclusion (~) ou utiliser un motif inverse (^)
>
>     *                         # tous les fichiers
>     *~*(jp(e|)g|png|bmp)      # tous sauf les fichier jpeg jpg png bpm
>     *~*.(#i)(jp(e|)g|png|bmp) # idem mais key insensitive
>
> les exclusions sont chainables
>
>     bar*~*foo?*.*~*.txt
>
> sont tous les fichiers qui commencent par bar, qui contiennent foo et au
> moins un symbole dans la base et qui ne sont pas d'extension txt.
>
> tu peux aussi utiliser l'exclusion
>
>     mkdir old
>     mv ^old old # déplace tous les fichiers et repertoires autres que
>                 # old dans old
>
> tu peux aussi écrire un filtre maison pour avoir une exculsion à la
> mimine: soit ~/protect ta liste des fichiers a proteger:
>
>     rm *(e:'! grep -qxF $REPLY ~/protect':)
>
> et même écrire une fonction filtre réutilisable:
>
>     but_protected () ! grep -qxF $REPLY ~/protect
>     rm *(+but_protected)
>
> evidement ca n'est qu'un exemple parceque du coup il faudrait plutot
> faire un ls dans un fichier temporaire et faire cracher a grep la
> difference entre ce fichier et protected mais je voulais un cas simple.
>
> au passage je suis en train de collecter (c'est tres embroyonnaire)
> plein de notes sur le scripting zsh:
>
>     https://github.com/eiro/zsh-programming-guide/blob/master/intro.md
>
> a+
> marc
>
>
>
>


Reply to: