|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : janvier 2005 Messages : 15 ![]() |
Bonjour,
J'ai 2 questions : 1. La commande "ls !(*.txt)" (permettant de rechercher les fichiers ne se terminant pas par .txt) ne fonctionne pas s'il y a des sous-répertoires présents dans le répertoire de recherche. Y a-t-il une solution ? 2. La commande "find ... | xargs grep toto" me renvoie bien ce que je veux (les fichiers contenant toto), mais je n'arrive pas à faire une suppression de tous ces fichiers car, quand on ajoute le "-exec rm {} \;" à la fin, il tente de faire le exec sur le "grep" et non sur le "find / grep" global. Sauriez-vous m'aider sur ces 2 points, SVP ? Merci par avance ! |
|
|
00
|
|
|
#2 | ||
![]() ![]() Idriss NeumannConsultant en SSII et étudiant au CNAM Paris (ingénieur SI) Inscription : février 2009 Messages : 1 980 ![]() |
Bonjour.
Citation:
Citation:
Code :
for i in $(find ... | xargs grep toto); do rm -rf $i; done Idriss |
||
|
00
|
|
|
#3 |
|
Expert Confirmé
![]() Inscription : janvier 2011 Messages : 970 ![]() |
Salut,
Pour le 1, peut être avec ls | grep -v '*.txt'. Pour le 2 essaye : Code :
find ... -exec grep -l 'toto' {} \; | xargs rm -f
__________________
$ man woman Il n'y a pas de page de manuel pour woman. |
|
|
10
|
|
|
#4 |
|
Membre Expert
![]() Ingénieur développement logiciels Inscription : octobre 2008 Messages : 1 375 ![]() |
1. Si tu veux parcourir les sous-répertoire, tu peux utiliser find. Par exemple :
En passant, je ne sais pas si tu le réalises mais quand tu fais "ls !(*.txt)", c'est le shell qui expense le "!(*.txt)". La commande "ls" ne joue aucun rôle là dedans. En fait le shell appelles la commande ls, en lui donnant en argument la liste des fichiers qui matchent "!(*.txt)". 2. Une solution t'as déjà été donnée. J'ajouterai juste que tu peux peut-être te passer du find, en utilisant grep -R. |
|
|
10
|
Copyright © 2000-2012 - www.developpez.com