Comment trouver des fichiers qui ne se terminent pas par “.log” dans le script bash / shell

Je suis nouveau sur les scripts bash / shell. Je veux trouver tous les fichiers dans le répertoire et les sous-répertoires, qui ne se terminent pas par “.log”. Je sais que je peux utiliser la commande ci-dessous pour obtenir les fichiers qui se terminent par “.log”, mais j’ai besoin de ceux qui ne se terminent pas par cette extension:

find /tmp/mallik5/ -iname "*.log" 

Comment puis-je faire ceci?

Cette expression peut en faire:

 find /tmp/mallik5/ ! -name "*.log" 

Si vous cherchez simplement des fichiers, ajoutez -type f :

 find /tmp/mallik5/ -type f ! -name "*.log" 
 find /tmp/mallik5 -type f ! -name '*.log' 

Vous êtes à mi-chemin dans la réalisation de la tâche en sachant que GNU Find util est l’outil approprié.

Quelques solutions rapides seront :

 find /tmp/mallik5/ -not -name *.log find /tmp/mallik5/ ! -name *.log 

Si vous essayez d’agir sur le résultat de la recherche, vous pouvez essayer:

 find /tmp/mallik5/ -not -name *.log -print0 | xargs -0 rm -f 

La ligne ci-dessus vous aide à trouver et à supprimer les fichiers dont le nom ne se termine pas par * .log

La connaissance du pattern matching est la clé pour résoudre la tâche, pour en savoir plus. Cliquez ici

Pour en savoir plus sur l’utilitaire de recherche GNU , visitez ici