Find avec regex
Résolu/Fermé
charline159
Messages postés
208
Date d'inscription
lundi 14 août 2017
Statut
Membre
Dernière intervention
22 juin 2022
-
Modifié le 31 mars 2021 à 15:47
mamiemando Messages postés 33327 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 28 octobre 2024 - 6 avril 2021 à 12:26
mamiemando Messages postés 33327 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 28 octobre 2024 - 6 avril 2021 à 12:26
A voir également:
- Find regex
- Ava find - Télécharger - Divers Utilitaires
- Regex ne contient pas ✓ - Forum Programmation
- Couldn't find ds menu.dat ✓ - Forum Jeux vidéo
- Cannot find required map name - Forum BIOS
- Partition find and mount - Télécharger - Récupération de données
2 réponses
mamiemando
Messages postés
33327
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
28 octobre 2024
7 799
Modifié le 1 avril 2021 à 12:26
Modifié le 1 avril 2021 à 12:26
Bonjour,
Le plus simple serait que
Dans ton cas :
... ou :
Quelques explications :
Exemple :
Bonne chance
Le plus simple serait que
findsoit instancié de sorte à générer un sur-ensemble des fichiers que tu cherches (e.g. en listant tous les fichiers du répertoire dans lequel tu fais la recherche) et avec un pipe, de filtrer cette liste à l'aide de
grep.
Dans ton cas :
find -type f . | grep "/file[0-9][0-9]$"
... ou :
find -type f . | egrep "/file[0-9]{2}$"
Quelques explications :
- La commande
find .
va lister des fichiers contenant au moins un / devant le nom du fichier (sifichier
est dans le répertoire courant, ce sera./fichier
) ; on peut donc inclure/
dans le motif de recherche, ce qui évitera d'accepter les fichiers dont le nom serait par exempletoto_file12
). - La syntaxe
[0-9]
signifie n'importe quel caractère compris entre0
et9
(au sens de l'alphabet sous-jacent, e.g. ASCII), donc ici n'importe quel caractère qui désigne un chiffre entre 0 et 9 inclus. - Le meta-caractère
$
signifie que le motif cherché par grep doit apparaître à la fin. Donc par exemple on accepte de gardertoto/titi/file12
mais on ne garde pasfile12_toto
. - Dans l'absolu
grep
permet aussi d'ancrer le filtrage sur le début desfind
on ne fait pas de même pour le début de chaîne car le nom du fichier est précédé par le nom du dossier qui le contient.
Exemple :
(mando@silk) (~/toto) $ touch file1 file12 file123
(mando@silk) (~/toto) $ find . -type f
./file123
./file12
./file1
(mando@silk) (~/toto) $ find . -type f | egrep "/file[0-9]{2}$"
./file123
./file12
Bonne chance
charline159
Messages postés
208
Date d'inscription
lundi 14 août 2017
Statut
Membre
Dernière intervention
22 juin 2022
1
1 avril 2021 à 21:20
1 avril 2021 à 21:20
Ça marche très bien de mon côté, j'ai pu supprimer ce que je voulais. Merci pour ta réponse!
mamiemando
Messages postés
33327
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
28 octobre 2024
7 799
6 avril 2021 à 12:26
6 avril 2021 à 12:26
Parfait, bonne continuation :-)