8
votes

Comment supprimer tous les fichiers ne se terminant pas avec certains formats?

afin de supprimer tous les fichiers se terminant par .lnx , la cmd serait rm * .lnx , non?

Si je veux supprimer tous les fichiers qui ne se terminent pas avec [.lnx], quelle commande dois-je utiliser?

Y a-t-il une telle chose?


0 commentaires

3 Réponses :


16
votes
find . -depth 1 -type f -not -name '*.lnx' -delete
find all files (-type f) in the current directory (-depth 1) which do not match the filename (-not -name '*.lnx'), and delete them (-delete)As always, test this first. Run it without the -delete to see all the files that match.

1 commentaires

-TYPE F n'est pas requis. Il n'a pas dit qu'il voulait exclure les répertoires.



19
votes

Vous pouvez utiliser Ceci :

!(pattern-list)
    Matches anything except one of the given patterns. 
    A pattern-list is a list of one or more patterns separated by a ‘|’.


3 commentaires

Bien, mais note que vous aurez besoin EXTLGLOB activé (avec shopt -s extglob ) pour l'utiliser.


À Ubuntu: EXTLGLOB est en défaut.


Ai-je manqué où il a dit qu'il est sur Ubuntu? Je ne vois pas cela indiqué ou impliqué nulle part. Quoi qu'il en soit, cela ne va pas nécessairement être sur tout le monde qui vient à ce fil pour une réponse, il vaut donc la peine de noter.



3
votes
ls | grep -v '\.lnx$' | xargs rm

0 commentaires