Con bash
Avec le globbing étendu de Shell, vous pouvez supprimer tous les fichiers dont l'extension est autre que .pdf
en utilisant
rm -- *.!(pdf)
Comme l'a noté @pts, le --
indiquent la fin des options de la commande, rendent la commande sûre dans le cas rare de fichiers dont le nom commence par un -
caractère.
Si vous souhaitez supprimer les fichiers sans aucune extension ainsi que ceux dont l'extension est différente de .pdf
, alors, comme l'a souligné @DennisWilliamson, vous pourriez utiliser
rm -- !(*.pdf)
La globalisation étendue devrait être activée par défaut, mais si ce n'est pas le cas, vous pouvez le faire en utilisant la fonction
shopt -s extglob
En particulier si vous avez l'intention d'utiliser ceci à l'intérieur d'un script, il est important de noter que si l'expression ne correspond à rien (c'est-à-dire s'il n'y a pas de fichiers autres que pdf dans le répertoire), alors par défaut le glob sera passé non expansé à la commande rm
La commande de l'utilisateur se traduit par une erreur du type
rm: cannot remove `*.!(pdf)': No such file or directory
Vous pouvez modifier ce comportement par défaut à l'aide de la fonction nullglob
Shell, mais cela pose ses propres problèmes. Pour une discussion plus approfondie, voir NullGlob - Le Wiki de Greg