Commande find

7 réponses
Avatar
David Martin
--000000000000ee70d305b5038831
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Bonjour ̓  tous,

J'ai un petit soucis sur un petit script que j'essai de faire pour supprimer
les r̓©pertoires Mozilla de mes utilisateurs.

Mon probl̓¨me c'est que je n'arrive pas ̓  isoler correctement les
r̓©pertoires que je ne souhaite pas scruter.

La variable $DIR me sort bien ce qu'elle contient quand je fais un echo
dessus,
mais la commande egrep ne fonctionne pas avec la variable.

Je vous montre ce que j'ai fait, j'ai sans doute pas bon



#!/bin/bash
# Nettoyage des r̓©pertoires Mozilla utilisateur
#

clear
# 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"
#
#
rm -Rf delmozilla.log
reponse=0
#
echo "---------------------------------------------"
echo "Script de suppression des r̓©pertoires Mozilla"
echo "---------------------------------------------"
echo ""
echo "Liste des exclusions : "
echo "$DIR"
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;
echo "suppression termin̓©e";
echo "nombre de repertoire effaces :"
cat delmozilla.log | grep Mozilla | wc -l
break;;

[Nn]* ) clear; echo "Editez le script et Mettez ̓  jour la"
echo "liste des r̓©pertoires ̓  exclure"; exit;;
* ) echo "Repondre par Oui / Non";;
esac
done
echo "Op̓©ration Termin̓©e"



--
david martin

--000000000000ee70d305b5038831
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir="ltr">Bonjour ̓  tous,<div><br></div><div>J&#39;ai un petit soucis sur un petit script que j&#39;essai de faire pour supprimer</div><div>les r̓©pertoires Mozilla de mes utilisateurs.</div><div><br></div><div>Mon probl̓¨me c&#39;est que je n&#39;arrive pas ̓  isoler correctement les r̓©pertoires que je ne souhaite pas scruter.</div><div><br></div><div>La variable $DIR me sort bien ce qu&#39;elle contient quand je fais un echo dessus,</div><div>mais la commande egrep ne fonctionne pas avec la variable.</div><div><br></div><div>Je vous montre ce que j&#39;ai fait, j&#39;ai sans doute pas bon</div><div><br></div><div><table cellpadding="0" class="gmail-ajC" style="border-spacing:0px;line-height:20px;font-family:Roboto,RobotoDraft,Helvetica,Arial,sans-serif;font-size:14px"><tbody><tr class="gmail-ajv"><td colspan="2" tabindex="0" class="gmail-gL" style="vertical-align:top;width:auto;padding:2px 0px"><span class="gmail-gI" style="vertical-align:top"><br class="gmail-Apple-interchange-newline"><br></span></td></tr></tbody></table>#!/bin/bash<br># Nettoyage des r̓©pertoires Mozilla utilisateur<br># ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂ <br>clear<br># liste des noms de r̓©pertoire ̓  mettre ̓  jour s̓©par̓© d&#39;un pipe :&quot;<br>#<br>DIR=&quot;0|1|2|3|4|5|6|7|8|9|netlogon|backup|eole|mail&quot;<br>#<br>#<br>rm -Rf delmozilla.log<br>reponse=0<br># <br>echo &quot;---------------------------------------------&quot;<br>echo &quot;Script de suppression des r̓©pertoires Mozilla&quot;<br>echo &quot;---------------------------------------------&quot;<br>echo &quot;&quot;<br>echo &quot;Liste des exclusions : &quot;<br>echo &quot;$DIR&quot;<br>while true; do<br> read -p &quot;Etes vous d&#39;accord avec la liste d&#39;exclusion ?&quot; on<br> case $on in<br> [Oo]* ) echo &quot;Suppression en cours...&quot; ;<br> ͂  ͂  ͂  ͂ find -iname Mozilla | egrep -v $DIR | xargs rm -Rvf &gt; delmozilla.log; <br> echo &quot;suppression termin̓©e&quot;;<br> echo &quot;nombre de repertoire effaces :&quot;<br> cat delmozilla.log | grep Mozilla | wc -l<br> break;; ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂ <br>͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  [Nn]* ) clear; echo &quot;Editez le script et Mettez ̓  jour la&quot;<br> echo &quot;liste des r̓©pertoires ̓  exclure&quot;; exit;;<br>͂  ͂  * ) ͂  ͂ echo &quot;Repondre par Oui / Non&quot;;;<br> esac<br>done<br>echo &quot;Op̓©ration Termin̓©e&quot;</div><div><br></div><div><br></div><div><div><br></div>-- <br><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr">david martin<div><br></div></div></div></div></div>

--000000000000ee70d305b5038831--

7 réponses

Avatar
̓‰tienne Mollier
--zRA7pxD2HTy4mz5K
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
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
Fingerprint: 8f91 b227 c7d6 f2b1 948c 8236 793c f67e 8f0d 11da
Sent from /dev/pts/1, please excuse my verbosity.
--zRA7pxD2HTy4mz5K
Content-Type: application/pgp-signature; name="signature.asc"
-----BEGIN PGP SIGNATURE-----
iQIzBAABCgAdFiEEj5GyJ8fW8rGUjII2eTz2fo8NEdoFAl+/zf8ACgkQeTz2fo8N
EdoM9BAAkCOWEJ02Au/4MUXwcrvkAPuwAi1jqbSXJEopjY7eBbKUwh9FlbckHdFs
8dNDsKld8h0xcjNRTEIBvdNDmQAy4sh5XaNRlybcucRUQS56nMyOg94alrvsahJo
7h6FR0ycXqXumS6JtI3uYeL0e1VdjT0I7gPix7+l53i/kwUIvZ+BXiByOk4YDq++
xUnXeTICzGbyzp7xHz/qDHoJCYdTkAxuqOHJLyjSgeiyBfBDpoX6Y3c5h7QFHegl
AlPvhhojN1NhpJK3rWq6JrSiGNSJZ3zGN4OIqnS7OMYsB88oy+ZF2g0Sc/8Wm0WF
uTB5MmuD/NNn/eYANZxCwbGkKfZdV/bZwik1z8l18HMOcY4dklG+1H8Tay6rgWN8
Ldt9VYv9+zu6wYW7zslYvYCt0EC2eSK1uF+reOFWOltBtYGLNUl5sKS6daxla8Wp
4uHDVhyBBG32bprPuLyC5mRRMxqmlf9/Z35b9WZvMqVdnYA6xJud/WLfu2koXwCv
yCmmE9XNEnQ2DC8aig3pUxlNvIw83Xr23DQossaXFNH1BjQjbZaacVTNE4uqfIge
3Mlfx128AsNFo7o6ZZi2G6mk+fi/SxTGfYbN+L76zTlD1OQOXJNUgE/BwAYgdcHX
0JQ+uMjAXOGOd3D1aqw9mWjbRlDC1qeC/2G6a3l7aZFk9ZUH9j8=0+1t
-----END PGP SIGNATURE-----
--zRA7pxD2HTy4mz5K--
Avatar
David Martin
--0000000000001b29f505b513d80f
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
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
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
Fingerprint: 8f91 b227 c7d6 f2b1 948c 8236 793c f67e 8f0d 11da
Sent from /dev/pts/1, please excuse my verbosity.

--
david martin
--0000000000001b29f505b513d80f
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir="ltr">Bonjour ̓  tous les deux,͂ <div><br></div><div>merci pour ces informations, cependant la commande find ne fonctionnais pas et aucun effacement</div><div>selectif n&#39;̓©tait possible (dixit la variable). les modification de mise en variable d̓©j̓  test̓©.</div><div><br></div><div>pour le sheebang͂ et set -e c&#39;est un choix... g̓©n̓©ralement je fais mes scripts et les testes d&#39;abord en environnement</div><div>de test ou pr̓©prod avant de les passer scrupuleusement soigneusement en production.</div><div><br></div><div>J&#39;ai trouv̓© la solution :</div><div><br></div><div>J&#39;ai finalement trouver en modifiant uniquement celle-ci par͂ </div><div><br></div><div>find . -name Mozilla ͂ -type d -ls -exec rm -rv {} + | egrep -v $DIR &gt; delmozilla.log;<br></div><div><br></div><div>Ca selectionne͂ bien, ̓§a log bien, et ̓§a efface juste ce qu&#39;il faut. Je ne maitrise pas assez les fonctions, mais celle-ci</div><div>pour quelque chose d&#39;aussi simple n&#39;est peut ̓ªtre pas utile. Qu&#39;en pensez-vous ?</div><div><br></div><div>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</div><div>̓  ̓©crire ;-)</div><div><br></div><div>Connaissez vous la commande pour stoper le bash d̓¨s son lancement pour pr̓©ciser de comment̓© ou d̓©comment̓© celle</div><div>ci pour pouvoir le lancer ? (c&#39;est une s̓©curit̓© que j&#39;aime bien utiliser pour les exploitants )</div><div><br></div><div>Je ne m&#39;en souviens plus du tout...</div><div><br></div><div>Merci pour votre aide... je vais refaire un test avec les mises en variable.</div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Le͂ jeu. 26 nov. 2020 ̓ ͂ 16:47, ̓‰tienne Mollier &lt;<a href="mailto:"></a>&gt; a ̓©crit͂ :<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Bonjour David,<br>
<br>
David Martin, on 2020-11-26 15:40:59 +0100:<br>
&gt; #!/bin/bash<br>
<br>
Il vaut mieux arr̓ªter le script imm̓©diatement si une ̓©tape<br>
finit en erreur de mani̓¨re inattendue.͂  Or ce n&#39;est pas le<br>
comportement par d̓©faut du shell.͂  Pour activer ce comportement,<br>
une bonne pratique est d&#39;activer cette option &quot;-e&quot; quasiment<br>
juste apr̓¨s le shebang :<br>
<br>
͂  ͂  ͂  ͂  set -e<br>
<br>
Les options -v et -x sont int̓©ressantes ̓  utiliser au moment de<br>
r̓©diger le script, pour voir quand se lancent les commandes, et<br>
v̓©rifier que les variables ont des valeurs coh̓©rentes,<br>
respectivement.<br>
<br>
[...]<br>
&gt; # liste des noms de r̓©pertoire ̓  mettre ̓  jour s̓©par̓© d&#39;un pipe :&quot;<br>
&gt; #<br>
&gt; DIR=&quot;0|1|2|3|4|5|6|7|8|9|netlogon|backup|eole|mail&quot;<br>
[...]<br>
&gt; echo &quot;Liste des exclusions : &quot;<br>
&gt; echo &quot;$DIR&quot;<br>
<br>
Je pense qu&#39;̓  ce point du script, ce pourrait ̓ªtre une bonne<br>
id̓©e de lancer :<br>
<br>
͂  ͂  ͂  ͂  find -iname Mozilla | egrep -v &quot;$DIR&quot;<br>
<br>
̓‡a devrait vous permettre d&#39;y voir plus clair dans ce qui va<br>
effectivement sauter, au lieu de juste voir quelle expression<br>
est utilis̓©e pour le filtrage.͂  En tant qu&#39;utilisateur du<br>
script, je pense que je pr̓©f̓¨re voir ce qui va sauter, plut̓´t<br>
que de voir comment.<br>
<br>
̓‰ventuellement, vous pouvez enregistrer la liste dans un<br>
fichier, avec &quot;tee&quot;, pour la r̓©utiliser au moment d&#39;effacer, au<br>
lieu de relancer un &quot;find&quot;, co̓»teux en op̓©rations d&#39;entr̓©es et<br>
sorties, une seconde fois.<br>
<br>
&gt; while true; do<br>
&gt; read -p &quot;Etes vous d&#39;accord avec la liste d&#39;exclusion ?&quot; on<br>
&gt; case $on in<br>
&gt; [Oo]* ) echo &quot;Suppression en cours...&quot; ;<br>
&gt;͂  ͂  ͂  ͂  find -iname Mozilla | egrep -v &quot;$DIR&quot; | xargs rm -Rvf &gt; delmozilla.log;<br>
͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ͂  ^~~~~^<br>
Je serais ̓  votre place, je prot̓¨gerais la variable avec des<br>
double quotes, comme ci-dessus.͂  DIR est amen̓©e ̓  stocker des<br>
expressions rationelles, et ce genre de contenu peut facilement<br>
̓ªtre interpr̓©t̓© par le shell d&#39;une fa̓§on inattendue.<br>
<br>
Je ne sais pas si ̓§a va r̓©soudre votre probl̓¨me, mais si ̓§a peut<br>
vous aider ̓  y voir plus clair...͂  Plus largement, ̓§a vaudrait<br>
le coup de voir pourquoi ce genre de m̓©nage est n̓©cessaire.<br>
Admettons que je sois utilisateur de vos syst̓¨mes, s&#39;il devait y<br>
avoir une passe de cet outil dans mon dos, ̓§a m&#39;emb̓ªterait<br>
beaucoup de perdre mon historique.<br>
<br>
Bonne fin de journ̓©e,͂  :)<br>
-- <br>
̓‰tienne Mollier &lt;<a href="mailto:" target="_blank"></a>&gt;<br>
Fingerprint:͂  8f91 b227 c7d6 f2b1 948c͂  8236 793c f67e 8f0d 11da<br>
Sent from /dev/pts/1, please excuse my verbosity.<br>
</div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr">david martin<div><br></div></div></div>
--0000000000001b29f505b513d80f--
Avatar
David Martin
--0000000000007301c105b5140220
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Sebastien,
DIR="([0-9]|netlogon|backup|eole|mail)" ---> ne fonctionne pas du tout,
j'ai tout explos̓© ;-)
Heureusement que je teste avant ;-)
Le jeu. 26 nov. 2020 ̓  15:49, S̓©bastien Dinot a
̓©crit :
David Martin a ̓©crit :
La variable $DIR me sort bien ce qu'elle contient quand je fais un
echo dessus, mais la commande egrep ne fonctionne pas avec la
variable.

Il manque des parenth̓¨se en d̓©but et fin de s̓©quence. Il faut
remplacer :
DIR="0|1|2|3|4|5|6|7|8|9|netlogon|backup|eole|mail"
par :
DIR="(0|1|2|3|4|5|6|7|8|9|netlogon|backup|eole|mail)"
voire par :
DIR="([0-9]|netlogon|backup|eole|mail)"
S̓©bastien
--
S̓©bastien Dinot,
http://www.palabritudes.net/
Ne go̓»tez pas au logiciel libre, vous ne pourriez plus vous en passer !

--
david martin
--0000000000007301c105b5140220
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir="ltr">Sebastien,<div><br></div><div>DIR=&quot;([0-9]|netlogon|backup|eole|mail)&quot;͂  ͂ ---&gt; ne fonctionne pas du tout, j&#39;ai tout explos̓© ;-)<br></div><div><br></div><div>Heureusement que je teste avant ;-)</div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Le͂ jeu. 26 nov. 2020 ̓ ͂ 15:49, S̓©bastien Dinot &lt;<a href="mailto:"></a>&gt; a ̓©crit͂ :<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">David Martin a ̓©crit :<br>
&gt; La variable $DIR me sort bien ce qu&#39;elle contient quand je fais un<br>
&gt; echo dessus, mais la commande egrep ne fonctionne pas avec la<br>
&gt; variable.<br>
<br>
Il manque des parenth̓¨se en d̓©but et fin de s̓©quence. Il faut<br>
remplacer͂ :<br>
<br>
DIR=&quot;0|1|2|3|4|5|6|7|8|9|netlogon|backup|eole|mail&quot;<br>
<br>
par͂ :<br>
<br>
DIR=&quot;(0|1|2|3|4|5|6|7|8|9|netlogon|backup|eole|mail)&quot;<br>
<br>
voire par͂ :<br>
<br>
DIR=&quot;([0-9]|netlogon|backup|eole|mail)&quot;<br>
<br>
S̓©bastien<br>
<br>
-- <br>
S̓©bastien Dinot, <a href="mailto:" target="_blank"></a><br>
<a href="http://www.palabritudes.net/" rel="noreferrer" target="_blank">http://www.palabritudes.net/</a><br>
Ne go̓»tez pas au logiciel libre, vous ne pourriez plus vous en passer !<br>
<br>
</div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr">david martin<div><br></div></div></div>
--0000000000007301c105b5140220--
Avatar
Daniel Caillibaud
Le 26/11/20 Í  16h47, Étienne Mollier a écrit :
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.

Oui, mais juste pour préciser le shell interprête bien ce qu'il y a
dans des doubles quotes, c'est justement l'effet voulu ici, $DIR sera
bien remplacé par son contenu.
Mais si le contenu contient des $ ou des ! ça ne sera pas interprété
par le shell, sauf si on passe ça Í  une autre commande…
(par ex si tout ça est dans une commande passé Í  ssh entre ").
Le quoting en shell peut vite tourner au cauchemar…
J'essaie de créer des variables intermédiaire quand je dois faire des trucs
comme
ssh $host "<une commande générée, avec du pipe et du quoting dedans>"
mais j'ai de temps en temps des trucs un peu horrible comme
awk "on met des doubles quotes car on veut que $foo soit interprété"'ici on peut mettre du $ qui sera bien passé Í  awk'"suite du script, on peut aussi echapper $foo pour qu'il ne soit pas interprété"
o͹ il faut faire bien gaffe Í  ce qu'une variable qui sera interprétée ne
contiennent pas de " ou ' suivant le contexte.
--
Daniel
Si vous ne payez pas un service fourni par une entreprise sur Internet,
c'est que vous n'êtes pas le client mais le produit vendu.
Avatar
Sébastien Dinot
David Martin a écrit :
DIR="([0-9]|netlogon|backup|eole|mail)" ---> ne fonctionne pas du
tout, j'ai tout explosé ;-)

C'est donc que je n'ai pas compris ton attente parce que la commande :
egrep -v "([0-9]|netlogon|backup|eole|mail)"
fait bien ce que je pensais qu'elle devait faire lorsque je te l'ai
proposée.
Heureusement que je teste avant ;-)

Oui, terminer un enchainement de commandes par quelque chose du genre
« | rm -rf » mérite toujours mÍ»re réflexion et force tests au préalable
de ce qui la précède, sans oublier une grande inspiration/expiration
avant d'appuyer sur Entrée. :)
Sébastien
--
Sébastien Dinot,
http://www.palabritudes.net/
Ne goͻtez pas au logiciel libre, vous ne pourriez plus vous en passer !
Avatar
Gaëtan Perrier
--=-lEfiol6Zj0U804D1QjCD
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Le vendredi 27 novembre 2020 ̓  11:08 +0100, David Martin a ̓©crit͂ :
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;

Quel est l'int̓©r̓ªt du '-ls' ?
Ga̓«tan
--=-lEfiol6Zj0U804D1QjCD
Content-Type: application/pgp-signature; name="signature.asc"
Content-Description: This is a digitally signed message part
Content-Transfer-Encoding: 7bit
-----BEGIN PGP SIGNATURE-----
iQEzBAABCgAdFiEEd7zcTjS9jiJYzB4MTEjQapSg6ZkFAl/BWRoACgkQTEjQapSg
6ZkTLAf+P2sjjynj+b5Wsw+mdWMGvYCTh1dv7FqVkt8/fCTOfE5UuiVD38dku+BY
yibAwJxKJUDmn6UYT+WQSs50daMDjxOvQkO4Z/dmraskA+JJE9ZgA73D4KwkGC0r
HZK2SmnPHmwKN7jrG93Y4GouMdf8JZMrUFgKFeCTj2A2pOiXrKBJ7qw4Xpal7cjO
BkDj+SwyBf0gsKTiGzd2qLSOhxLb+RzhKHKJoCWOKbWHk/icuveoS9Jo8vICgANG
c+KRElbe4R8igskMQcCfAe1tyCnTIL/8+AO2eJWkK/xi4JQ+NW8bemTliy2gLSbT
v8O32urp39NBIjsZvPKHF0mmWKRwBA==0l5e
-----END PGP SIGNATURE-----
--=-lEfiol6Zj0U804D1QjCD--
Avatar
David Martin
--000000000000e5427d05b5637898
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
un int̓©ret certain pour les logs et l'identification au besoin de "Lister"
ce qui ̓  ̓©t̓© supprim̓© !
Le ven. 27 nov. 2020 ̓  20:53, Ga̓«tan Perrier a
̓©crit :
Le vendredi 27 novembre 2020 ̓  11:08 +0100, David Martin a ̓©crit :
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;

Quel est l'int̓©r̓ªt du '-ls' ?
Ga̓«tan

--
david martin
--000000000000e5427d05b5637898
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir="ltr">un int̓©ret͂ certain pour les logs et l&#39;identification au besoin de &quot;Lister&quot; ce qui ̓  ̓©t̓© supprim̓© !</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Le͂ ven. 27 nov. 2020 ̓ ͂ 20:53, Ga̓«tan Perrier &lt;<a href="mailto:"></a>&gt; a ̓©crit͂ :<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Le vendredi 27 novembre 2020 ̓  11:08 +0100, David Martin a ̓©crit͂ :<br>
&gt; Bonjour ̓  tous les deux,͂ <br>
&gt; merci pour ces informations, cependant la commande find ne fonctionnais pas<br>
&gt; et aucun effacement<br>
&gt; selectif n&#39;̓©tait possible (dixit la variable). les modification de mise en<br>
&gt; variable d̓©j̓  test̓©.<br>
&gt; <br>
&gt; pour le sheebang͂ et set -e c&#39;est un choix... g̓©n̓©ralement je fais mes scripts<br>
&gt; et les testes d&#39;abord en environnement<br>
&gt; de test ou pr̓©prod avant de les passer scrupuleusement soigneusement en<br>
&gt; production.<br>
&gt; <br>
&gt; J&#39;ai trouv̓© la solution :<br>
&gt; <br>
&gt; J&#39;ai finalement trouver en modifiant uniquement celle-ci par͂ <br>
&gt; <br>
&gt; find . -name Mozilla ͂ -type d -ls -exec rm -rv {} + | egrep -v $DIR &gt;<br>
&gt; delmozilla.log;<br>
&gt; <br>
<br>
Quel est l&#39;int̓©r̓ªt du &#39;-ls&#39; ?<br>
<br>
Ga̓«tan<br>
</div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr">david martin<div><br></div></div></div>
--000000000000e5427d05b5637898--