J'ai essayé de supprimer les fichiers qui commencent par A et se terminent par 2 chiffres, mais cela ne fait rien.
Ce que j'ai essayé:
rm ^A*[0..9]2$
Où est-ce que je me trompe?
Vous pouvez utiliser la commande suivante pour supprimer tous les fichiers correspondant à vos critères:
ls | grep -P "^A.*[0-9]{2}$" | xargs -d"\n" rm
Comment ça marche:
ls
liste tous les fichiers (un par ligne puisque le résultat est redirigé).
grep -P "^A.*[0-9]{2}$"
filtre la liste des fichiers et ne laisse que ceux qui correspondent à l'expression régulière ^A.*[0-9]{2}$
.*
indique n'importe quel nombre d'occurrences de .
, où .
est un caractère générique correspondant à n'importe quel caractère.
[0-9]{2}
indique exactement deux occurrences de [0-9]
, c'est-à-dire n'importe quel chiffre.
xargs -d"\n" rm
exécute rm line
une fois pour chaque line
qui lui est connecté.
Où est-ce que je me trompe?
Pour commencer, rm
n'accepte pas une expression régulière en tant qu'argument. Outre le caractère générique *
, tous les autres caractères sont traités littéralement.
En outre, votre expression régulière est légèrement en retrait. Par exemple, *
signifie toutes les occurrences de ...
dans une expression régulière, donc A*
correspond à A
, AA
, etc. et même à une chaîne vide.
Pour plus d'informations, visitez Regular-Expressions.info .
Ou en utilisant find
:
find your-directory/ -name 'A*[0-9][0-9]' -delete
Cette solution traitera avec des noms de fichiers étranges .
Voir la section Extension du nom de fichier de la page de manuel bash:
rm A*[0-9][0-9]
La solution avec regexp est 200 fois mieux, même avec cela, vous pouvez voir quel fichier sera supprimé avant d'utiliser la commande, coupant ainsi le pipe final:
ls | grep -P "^A.*[0-9]{2}$"
Ensuite, s'il est correct, utilisez simplement:
ls | grep -P "^A.*[0-9]{2}$" | xargs -d "\n" rm
C'est 200 fois mieux, car si vous travaillez avec Unix, il est important de savoir comment utiliser grep. C'est très puissant si vous savez comment l'utiliser.
Cela fonctionne sur mon mac:
rm $(ls | grep -e '^A*[0..9]2$')