Bonjour,
j'ai un fichier texte dans lequel je liste tous les chemins qu'une commande find doit ignorer.
Pour l'utiliser, j'ai écrit le petit script bash suivant:
#!/bin/bash
MONFICHIER="fic.txt"
NO_PATH=""
while read item
do
NO_PATH="${NO_PATH} ! -path \"$item\""
done < <(cat ${MONFICHIER})
echo ${NO_PATH}
find $HOME -type f ${NO_PATH}
Malheureusement, si "echo" me renvoit ce que je désire, ce n'est pas le cas de la commande find: mes "! path" sont ignorés :-(.
Est-ce qu'une bonne âme aurait une idée comment remédier au problème? Est-ce qu'à tout hasard il y aurait une solution plus "élégante" (j'ai parcouru la man-page de GNU find mais n'ai pas trouvé comment injecter une liste de chemins que je ne désire pas parcourir)?
# Échappements ?
Posté par Ph Husson (site web personnel) . Évalué à 3.
En tout les cas, remplace le par un -not, c'est tout aussi lisible et ca risque pas de tomber sur ce genre de problemes.
[^] # Re: Échappements ?
Posté par Sylvain Briole (site web personnel) . Évalué à 1.
En ce qui concerne le "-not": je ne l'avais pas utilisé en raison de la page de manuel:
-not expr
Same as ! expr, but not POSIX compliant.
[^] # Re: Échappements ?
Posté par Christophe --- . Évalué à 1.
Pour ce qui est de l'échappement, il faut que tu mettes '\\!' et cela devrait passer.
# printf debugging considered harmfull
Posté par defmonkey . Évalué à 1.
#!/bin/bash -x
[...]
Comme ça tu sauras ce qui se passe vraiment. Pour tracer juste une portion de code, tu l'encadres avec des set -x et set +x. Et ça fonctionne aussi avec sh.
# Solution
Posté par benoar . Évalué à 3.
< <(cat ${MONFICHIER})
c'est très moche et redondant (et en plus ça ne marche que sous bash), quand il suffit de faire< ${MONFICHIER}
Ensuite, pour ton find, ce que tu souhaites se rapproche plutôt de -prune :
NO_PATH="$NOPATH -path \"$item\" -prune" -o
...
find $HOME $NOPATH -type f -print
J'en ai parlé dans un post sur ce forum il y a quelques jours en plus ...
[^] # Re: Solution
Posté par benoar . Évalué à 2.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.