2 réponses
mamiemando
- Messages postés
- 29703
- Date d'inscription
- jeudi 12 mai 2005
- Statut
- Modérateur
- Dernière intervention
- 8 avril 2021
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
- 175
- Date d'inscription
- lundi 14 août 2017
- Statut
- Membre
- Dernière intervention
- 8 avril 2021
Ça marche très bien de mon côté, j'ai pu supprimer ce que je voulais. Merci pour ta réponse!