|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 | ||
|
Nouveau Membre du Club
![]() Inscription : mai 2009 Messages : 105 ![]() |
Bonjour
Je souhaite exclure des fichiers et dossiers de mon traitement, voici mon code : Code :
jquery,*.css,*.ini,*.jpg,*.png,*.gif,*.sql,*.swf,*.pdf Y a t il une erreur dans le code ou dans elements_a_exclure.txt ? J'ai oublié quelque chose ? Cordialement, Ginger |
||
|
|
10
|
|
|
#2 |
|
Expert Confirmé
![]() Inscription : janvier 2011 Messages : 970 ![]() |
Salut,
D'où elle sort cette variable ??? A mon avis tu t'y prends très mal pour faire ta sauce Quand on saura ce que représente "$i", on pourra sûrement t'en dire plus...
__________________
$ man woman Il n'y a pas de page de manuel pour woman. |
|
|
00
|
|
|
#3 | ||
|
Nouveau Membre du Club
![]() Inscription : mai 2009 Messages : 105 ![]() |
J'ai juste pas mis tout le code :
Code :
|
||
|
|
10
|
|
|
#4 |
|
Expert Confirmé
![]() Inscription : janvier 2011 Messages : 970 ![]() |
Quel est le but exact de ton script, à part celui d'exclure certains fichiers du traitement ?
Parce que un simple grep récursif en excluant les motifs souhaités devrait faire l'affaire...
__________________
$ man woman Il n'y a pas de page de manuel pour woman. |
|
|
10
|
|
|
#5 |
|
Expert Confirmé Sénior
![]() Inscription : février 2008 Messages : 2 071 ![]() |
Bonjour,
il est possible d'utiliser sed pour convertir le contenu du fichier (elements...txt) en une 'regex compatible' avec ce que peut comprendre find; passer cette 'regex compatible' à find pour qu'il fasse exécuter le «Traitement». |
|
|
10
|
|
|
#6 | ||
|
Nouveau Membre du Club
![]() Inscription : mai 2009 Messages : 105 ![]() |
Salut
Merci pour vos réponses @zipe31 : je regardes comment faire en grep @N_BaH : je ne comprend pas ce que tu veux dire Et si je fais quelque chose comme ça : Code :
|
||
|
|
10
|
|
|
#7 |
|
Expert Confirmé Sénior
![]() Inscription : février 2008 Messages : 2 071 ![]() |
c'est plus facile à montrer qu'à décrire :
Code :
find $tabdossier -type f -regextype posix-extended ! -iregex "$(sed ':x;N;s/[\n ,]/|/g; s/\*\./.*\\./g;bx' exclure.txt )" -exec sh -c 'echo "Traitement $1"' {} {} \; |
|
|
10
|
|
|
#8 |
|
Nouveau Membre du Club
![]() Inscription : mai 2009 Messages : 105 ![]() |
J'ai testé ton code N_BaH, ça me renvoie tous les fichiers du dossier traité, alors peut-être que j'ai mal écrit les éléments à exclure dans le fichier exclure.txt ?
Code :
jQuery,jqueryui,*.css,*.ini,*.jpg,*.png,*.gif,*.sql,*.swf,*.pdf,*.xml,*.txt,*.plist,*.icns,*.rsrc,*.strings,*.nib,*.DS_Store,*.buildpath,*.project,*.BCI |
|
|
00
|
|
|
#9 | ||
|
Expert Confirmé
![]() Inscription : janvier 2011 Messages : 970 ![]() |
Re-
Code :
__________________
$ man woman Il n'y a pas de page de manuel pour woman. |
||
|
|
10
|
|
|
#10 |
|
Expert Confirmé Sénior
![]() Inscription : février 2008 Messages : 2 071 ![]() |
dans l'expression sed, il faut déplacer le N, juste avant l'indication de branchement b :
Code :
find [...] $(sed :x;s/[\n ,]/|/g; s/\*\./.*\\./g;N;bx' exclure.txt) [...] \; |
|
|
00
|
|
|
#11 |
|
Nouveau Membre du Club
![]() Inscription : mai 2009 Messages : 105 ![]() |
Ah du coup ça marche ta première solution, super merci !
j'ai une autre question qui n'a rien à voir, mais ça reste dans le sujet : Est-ce qu'il existe un moyen d'échapper tous les espaces d'une chaîne s'ils existent en sh ? En l'occurence ici il s'agirait de protéger les espaces dans $tabdossier… |
|
|
00
|
|
|
#12 |
|
Expert Confirmé Sénior
![]() Inscription : février 2008 Messages : 2 071 ![]() |
utilise des guillemets :...
? |
|
|
00
|
|
|
#13 | |||||
|
Nouveau Membre du Club
![]() Inscription : mai 2009 Messages : 105 ![]() |
J'ai essayé, en fait le pb ne vient peut-être pas du fait qu'il faille échapper les espaces dans le nom du dossier, quoi que...
J'ai affiché le chemin envoyé en paramètre : Code :
Code :
Citation:
|
|||||
|
|
00
|
|
|
#14 | ||
|
Expert Confirmé Sénior
![]() Inscription : février 2008 Messages : 2 071 ![]() |
Code :
|
||
|
|
00
|
|
|
#15 | ||||||
|
Nouveau Membre du Club
![]() Inscription : mai 2009 Messages : 105 ![]() |
::::: EDIT :::::
J'ai re modifié le code : Code :
Code :
Code :
|
||||||
|
|
00
|
|
|
#16 |
|
Nouveau Membre du Club
![]() Inscription : mai 2009 Messages : 105 ![]() |
Je n'ai toujours pas trouvé de solution
|
|
|
00
|
|
|
#17 |
|
Expert Confirmé Sénior
![]() Inscription : février 2008 Messages : 2 071 ![]() |
Bonjour,
on reprend depuis le début : tu veux effectuer des opérations sur certains fichiers dans un dossier donné en paramètre, dont l'extension n'est pas "décrite" dans un fichier ... ? Corriger ton script n'est peut-être pas suffisant, il faut peut-être repenser tout le script. Et pour ça, il faut détailler ce qu'il faut faire. |
|
|
00
|
|
|
#18 | |||
|
Nouveau Membre du Club
![]() Inscription : mai 2009 Messages : 105 ![]() |
Bonjour
Oui voilà il s'agit d'effectuer des opérations sur les fichiers dont l'extension n'est pas en .jpg par exemple, dans le dossier passé en paramètre. Donc pour l'instant voici le script qui fonctionne : Code :
Et ce qui reste à réussir à faire : - Traiter les fichiers dans le dossier dont le nom peut avoir des espaces (1) - Traiter les fichiers dont l'extension n'est pas en .gif par exemple (2) :::EDIT::: (2) J'ai réussi à exclure les fichiers qui se trouvent dans elements_a_exclure.txt, mais pas les dossiers qui s'y trouvent, il doit y avoir quelque chose à rajouter au code sed que tu m'avais donné N_BaH : Code :
explorer=`find $tabdossier -type f -regextype posix-extended ! -iregex "$(sed ':x;s/[\n ,]/|/g; s/\*\./.*\\./g;N;bx' elements_a_exclure.txt )" -exec sh -c 'echo "$1"' {} {} \;` Citation:
|
|||
|
|
00
|
|
|
#19 | ||||||
|
Nouveau Membre du Club
![]() Inscription : mai 2009 Messages : 105 ![]() |
Bonjour
J'essaie de comprendre pourquoi ça ne marche pas pour les dossiers contenant un ou des espaces dans leurs noms, je crois savoir d'où vient le problème. En effet dans le code si j'écris ceci : Code :
Citation:
Citation:
J'ai essayé de l'écrire de différentes manières pour protéger le contenu de $1 : Code :
Sinon autre problème, l'exclusion fonctionne pour les fichiers mais pas pour les dossiers (elements_a_exclure.txt …) |
||||||
|
|
00
|
|
|
#20 |
|
Expert Confirmé Sénior
![]() Inscription : février 2008 Messages : 2 071 ![]() |
UMQ!* utilise des guillemets pour tes variables !
normalement, la commande find, que je t'ai donnée plus haut, devrait faire le boulot de ton script; j'avais mis echo "Traitement", il fallait le remplacer par le traitement que tu veux faire subir aux fichiers. * Use More Quotes! |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com