Suppression de fichiers sans extension spécifique

J’ai une liste de fichiers – certains se terminant par .txt et d’autres non. Comment puis-je exécuter une commande pour supprimer tous les fichiers ne se terminant pas par txt?

J’ai essayé:

rm *.[^txt] 

Mais ça n’a pas marché?

Si vous utilisez bash, vous pouvez activer l’option shell extglob :

 shopt -s extglob 

Vous pouvez ensuite utiliser la syntaxe de modèle étendue !(pattern) pour faire correspondre tous les noms de fichiers qui ne correspondent pas au pattern . Tout d’abord, testez-le avec echo :

 echo !(*.txt) 

En supposant que la sortie est les fichiers que vous souhaitez supprimer, appuyez sur le déclencheur:

 rm !(*.txt) 

Essaye ça :

 rm !(*.txt) 

Il devrait supprimer tous les fichiers ne se terminant pas par .txt

shopt -s extglob abord shopt -s extglob pour vous assurer que les fonctionnalités étendues de correspondance de modèle sont activées.
shopt -s vous montrera tous les comportements de shell optionnels activés.