Commande Linux pour returnner tous les files qui commencent par TEMP mais ne se terminent pas par des numbers à deux numbers

Quelle est la command Linux pour returnner tous les files qui commencent par TEMP mais ne se terminent pas par des numbers à deux numbers?

Je pense que ça devrait ressembler à quelque chose comme ça:

ls -l TEMP*[!0-9][!0-9] 

mais les résultats de ma search omettent certains résultats, il semble.

Avec GNU et les BSD les plus modernes, find :

 find . -maxdepth 1 -type f -name 'TEMP*' ! -name "*[0-9][0-9]" 

POSIXly:

 find . ! -name . -prune -type f -name 'TEMP*' ! -name "*[0-9][0-9]" 

ksh ou bash -O extglob ou zsh -o kshglob :

 ls -ld TEMP*@([^0-9]?|?[^0-9]) [T]EMP TEMP? 

Si votre shell est ksh , ou bash avec l'option shopt -s extglob ( shopt -s extglob pour l'activer), alors

 ls -d TEMP!(*[0-9][0-9]) 

devrait marcher. Si vous voulez effectuer une search récursive et que globstar est activé ( set -o globstar dans ksh93 , shopt -s globstar dans bash ), vous devriez pouvoir le faire en tant que

 ls -d -- **/TEMP!(*[0-9][0-9]) 

(notez qu'il ne traverse pas les directorys cachés par défaut)

Par exemple, si

 $ ls -d -- **/TEMP* TEMP12345 TEMP123ab TEMPabc12 TEMPabcde tests/TEMP12345 tests/TEMP123ab tests/TEMPabc12 tests/TEMPabcde 

puis

 $ ls -d -- **/TEMP!(*[0-9][0-9]) TEMP123ab TEMPabcde tests/TEMP123ab tests/TEMPabcde 

L'équivalent en zsh est:

 setopt extendedglob ls -d -- **/TEMP^*[0-9][0-9] 

Votre idée est ok: à la search de tout commençant par temp et ne se terminant pas par deux numbers. Malheureusement, je pense que vous avez fait une erreur de syntaxe. Vous devriez replace! par ^. Alors maintenant, vous searchz des files comme: temp * 99 et temp * !!.