1. Si tu veux parcourir les sous-répertoire, tu peux utiliser find. Par exemple :
find . -type f ! -name "*.txt"
En passant, je ne sais pas si tu le réalises mais quand tu fais "ls !(*.txt)", c'est le shell qui expense le "!(*.txt)". La commande "ls" ne joue aucun rôle là dedans. En fait le shell appelles la commande ls, en lui donnant en argument la liste des fichiers qui matchent "!(*.txt)".
2. Une solution t'as déjà été donnée. J'ajouterai juste que tu peux peut-être te passer du find, en utilisant grep -R.
Partager