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

Re: Commande find



Bonjour à tous les deux, 

merci pour ces informations, cependant la commande find ne fonctionnais pas et aucun effacement
selectif n'était possible (dixit la variable). les modification de mise en variable déjà testé.

pour le sheebang et set -e c'est un choix... généralement je fais mes scripts et les testes d'abord en environnement
de test ou préprod avant de les passer scrupuleusement soigneusement en production.

J'ai trouvé la solution :

J'ai finalement trouver en modifiant uniquement celle-ci par 

find . -name Mozilla  -type d -ls -exec rm -rv {} + | egrep -v $DIR > delmozilla.log;

Ca selectionne bien, ça log bien, et ça efface juste ce qu'il faut. Je ne maitrise pas assez les fonctions, mais celle-ci
pour quelque chose d'aussi simple n'est peut être pas utile. Qu'en pensez-vous ?

Il faut que je me dérouille.. ça fait longtemps que je ne me suis pas plongé dans le bash un temps soit peu ou long
à écrire ;-)

Connaissez vous la commande pour stoper le bash dès son lancement pour préciser de commenté ou décommenté celle
ci pour pouvoir le lancer ? (c'est une sécurité que j'aime bien utiliser pour les exploitants )

Je ne m'en souviens plus du tout...

Merci pour votre aide... je vais refaire un test avec les mises en variable.


Le jeu. 26 nov. 2020 à 16:47, Étienne Mollier <etienne.mollier@mailoo.org> a écrit :
Bonjour David,

David Martin, on 2020-11-26 15:40:59 +0100:
> #!/bin/bash

Il vaut mieux arrêter le script immédiatement si une étape
finit en erreur de manière inattendue.  Or ce n'est pas le
comportement par défaut du shell.  Pour activer ce comportement,
une bonne pratique est d'activer cette option "-e" quasiment
juste après le shebang :

        set -e

Les options -v et -x sont intéressantes à utiliser au moment de
rédiger le script, pour voir quand se lancent les commandes, et
vérifier que les variables ont des valeurs cohérentes,
respectivement.

[...]
> # liste des noms de répertoire à mettre à jour séparé d'un pipe :"
> #
> DIR="0|1|2|3|4|5|6|7|8|9|netlogon|backup|eole|mail"
[...]
> echo "Liste des exclusions : "
> echo "$DIR"

Je pense qu'à ce point du script, ce pourrait être une bonne
idée de lancer :

        find -iname Mozilla | egrep -v "$DIR"

Ça devrait vous permettre d'y voir plus clair dans ce qui va
effectivement sauter, au lieu de juste voir quelle _expression_
est utilisée pour le filtrage.  En tant qu'utilisateur du
script, je pense que je préfère voir ce qui va sauter, plutôt
que de voir comment.

Éventuellement, vous pouvez enregistrer la liste dans un
fichier, avec "tee", pour la réutiliser au moment d'effacer, au
lieu de relancer un "find", coûteux en opérations d'entrées et
sorties, une seconde fois.

> while true; do
> read -p "Etes vous d'accord avec la liste d'exclusion ?" on
> case $on in
> [Oo]* ) echo "Suppression en cours..." ;
>        find -iname Mozilla | egrep -v "$DIR" | xargs rm -Rvf > delmozilla.log;
                                        ^~~~~^
Je serais à votre place, je protègerais la variable avec des
double quotes, comme ci-dessus.  DIR est amenée à stocker des
expressions rationelles, et ce genre de contenu peut facilement
être interprété par le shell d'une façon inattendue.

Je ne sais pas si ça va résoudre votre problème, mais si ça peut
vous aider à y voir plus clair...  Plus largement, ça vaudrait
le coup de voir pourquoi ce genre de ménage est nécessaire.
Admettons que je sois utilisateur de vos systèmes, s'il devait y
avoir une passe de cet outil dans mon dos, ça m'embêterait
beaucoup de perdre mon historique.

Bonne fin de journée,  :)
--
Étienne Mollier <etienne.mollier@mailoo.org>
Fingerprint:  8f91 b227 c7d6 f2b1 948c  8236 793c f67e 8f0d 11da
Sent from /dev/pts/1, please excuse my verbosity.


--
david martin


Reply to: