Précédent   Forum des professionnels en informatique > Systèmes > Autres systèmes > Unix > AIX
AIX Forum d'entraide sur le système AIX. Avant de poster -> FAQ AIX et cours AIX
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/06/2011, 11h56   #1
Invité de passage
 
Inscription : janvier 2005
Messages : 15
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 15
Points : 3
Points : 3
Par défaut commandes ls, find, grep

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 !
toto753 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2011, 13h57   #2
Responsable Modération
 
Avatar de ok.Idriss
 
Homme Idriss Neumann
Consultant en SSII et étudiant au CNAM Paris (ingénieur SI)
Inscription : février 2009
Messages : 1 980
Détails du profil
Informations personnelles :
Nom : Homme Idriss Neumann
Âge : 21
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Consultant en SSII et étudiant au CNAM Paris (ingénieur SI)

Informations forums :
Inscription : février 2009
Messages : 1 980
Points : 6 095
Points : 6 095
Bonjour.

Citation:
Envoyé par toto753 Voir le message
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 ?
Je ne sais pas si cette option fonctionne en version POSIX :

Citation:
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.
Tu peut tenter quelque chose comme (à adapter/corriger/etc) :

Code :
for i in $(find ... | xargs grep toto); do rm -rf $i; done
Cordialement,
Idriss
ok.Idriss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2011, 14h00   #3
Expert Confirmé
 
Inscription : janvier 2011
Messages : 970
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : janvier 2011
Messages : 970
Points : 2 871
Points : 2 871
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.
zipe31 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 03/06/2011, 15h15   #4
Membre Expert
 
Homme
Ingénieur développement logiciels
Inscription : octobre 2008
Messages : 1 375
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 33
Localisation : France

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : octobre 2008
Messages : 1 375
Points : 2 034
Points : 2 034
1. Si tu veux parcourir les sous-répertoire, tu peux utiliser find. Par exemple :
Code :
find . -type f ! -name "*.txt"
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.
matafan est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h28.


 
 
 
 
Partenaires

Hébergement Web