Oui, rm *.xvgne supprimera que les fichiers se terminant par .xvgvotre répertoire actuel. Voici pourquoi.
Lorsque vous tapez une commande comme celle-ci, le travail est divisé entre le shell que vous utilisez (supposons bash) et la commande binaire.
Vous pouvez localiser le binaire en tapant which rm. Ce petit programme s'occupe de dissocier les fichiers. Des programmes comme celui-ci peuvent être démarrés à partir de la ligne de commande et peuvent lire une liste d'arguments prog arg1 arg2 arg3au démarrage. Dans le cas de rm, ils sont interprétés comme une liste de noms de fichiers complets à supprimer. Donc, si vous êtes dans un répertoire contenant le fichier foo.bar, la saisie delete 'foo.*'aboutira à rm: foo.*: No such file or directory. Notez les guillemets simples autour du modèle de fichier, ils disent au shell de transmettre l'argument au shell tel qu'il est.
Toutefois, si vous tapez rm *.bardans le même répertoire, le fichier sera supprimé. Ce qui se passe ici, c'est que votre shell, qui est le programme que vous utilisez pour taper des commandes, effectue certaines transformations avant de transmettre les arguments à la commande. L'un d'eux s'appelle 'extension de nom de fichier', autrement dit 'globbing'. Vous pouvez voir une liste des extensions de noms de fichiers bash ici . L’une des extensions les plus courantes est celle *qui est étendue aux noms de fichiers du répertoire en cours.
Un moyen simple de voir les globes au travail est d'utiliser echo, qui affiche tous les arguments qui lui sont transmis via le shell. Donc, en tapant echo *dans le même répertoire va sortir foo.bar. Ainsi, lorsque vous tapez rm *.bar, le shell étend la liste des arguments foo.bar, puis le transmet à la rmcommande.
Il y a des moyens de contrôler le globbing. Dans les versions récentes de bash, par exemple, vous pouvez activer une option appelée globstar qui effectuera une expansion récursive. En tapant, vous echo **/*.barverrez une liste de tous les fichiers se terminant .barpar tous les sous-dossiers. Donc, en tapant rm **/*.bardans globstar enabled bash supprimera effectivement de manière récursive tous les fichiers correspondants dans les sous-dossiers.
rm -f {*.xvg,.*.xvg}supprimer aussi les fichiers cachés. Etrm -R -f {*.xvg,.*.xvg}pour supprimer aussi les répertoires.