|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Nouveau Membre du Club
![]() Inscription : août 2007 Messages : 47 ![]() |
Bonjour,
Je veux supprimer une ligne bien particulière dans des fichiers de "type" web, c-a-d .php / .asp / .html / .htm / etc... De plus cette opération doit être faite dans l'ensemble d'un répertoire, de façon récursive. L'idée était d'utiliser grep -rl pour la partie recherche dans les fichiers en récursif, puis egrep pour filtrer sur les type de fichier et enfin un sed avec la chaine à supprimer dans les fichiers. Code :
grep -rl "MA_CHAINE" $1 | egrep '.php|.xml|.xmls|.html|.htm|.asp|.aspx' | sed '/MA_CHAINE/d' Problème 2: sed ne semble pas fonctionner avec ma ligne de commande.... Pour info je suis sous Ubuntu 10.04 (netbook) et bash v4.1.5 Merci pour votre aide. |
|
|
10
|
|
|
#2 |
|
Expert Confirmé Sénior
![]() Inscription : février 2008 Messages : 2 072 ![]() |
Bonjour,
ce qui arrive à sed c'est les noms des fichiers, et non leur contenu, donc sed ne les modifiera pas ! essaye ainsi : Code non testé :
sed -s -i.bak '/MA_CHAINE/d' $(grep -rl "MA_CHAINE" $1 | egrep '.php|.xml|.xmls|.html|.htm|.asp|.aspx') |
|
|
20
|
|
|
#3 |
|
Nouveau Membre du Club
![]() Inscription : août 2007 Messages : 47 ![]() |
Merci, là en effet la commande sed répond, par contre elle a du mal avec les fichiers contenant des espaces => "Aucun fichier ou dossier de ce type".
J'ai tenté avec des "" ou '' mais c'est pire... |
|
|
01
|
|
|
#4 |
|
Expert Confirmé Sénior
![]() Inscription : février 2008 Messages : 2 072 ![]() |
Evidemment
find permet de retrouver des fichiers en utilisant des regex de différents types. Regarde le man, et choisis celui qui te convient. Ensuite, l'option-commande -exec de find ne contiendra que la commande sed |
|
|
20
|
|
|
#5 |
|
Nouveau Membre du Club
![]() Inscription : août 2007 Messages : 47 ![]() |
ok, je vais regarder plus en détail car je ne connais que les opérations basiques...
merci |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com