J'ai essayé de supprimer les fichiers qui commencent par A et se terminent par 2 chiffres mais ça ne fait rien.
Ce que j'ai essayé:
rm ^A*[0..9]2$
Où est-ce que j'ai tort?
J'ai essayé de supprimer les fichiers qui commencent par A et se terminent par 2 chiffres mais ça ne fait rien.
Ce que j'ai essayé:
rm ^A*[0..9]2$
Où est-ce que j'ai tort?
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 passé en pipe).
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 est passée en pipe.
Où ai-je tort?
Pour commencer, rm
n'accepte pas une expression régulière comme argument. Mis à part le caractère générique *
, chaque autre caractère est traité littéralement.
De plus, votre expression régulière est légèrement incorrecte. Par exemple, *
signifie n'importe quelle occurrence 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.
Note - certaines distributions (comme Mac OS) n'ont pas de grep -P
(regex Perl). grep -E
peut fonctionner dans ce cas.
C'est une excellente solution. Je la préfère car elle est plus simple et vous pouvez omettre le drapeau -delete à la fin en premier pour voir si votre regex est correcte avant de supprimer en masse vos fichiers.
De plus, vous avez plus de contrôle sur ce que vous supprimez, par exemple en ajoutant -type f
Peut-il être utilisé pour supprimer des fichiers et des dossiers ? Cela ne fonctionne pas pour les dossiers non vides.
Consultez la section d'expansion de nom de fichier de la page manuel de bash:
rm A*[0-9][0-9]
SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.