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.moll...@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.moll...@mailoo.org> > Fingerprint: 8f91 b227 c7d6 f2b1 948c 8236 793c f67e 8f0d 11da > Sent from /dev/pts/1, please excuse my verbosity. > -- david martin