Re: rm -fr * (sauf : fichier1, Fichier2...)
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: