2009-05-28 5 views

Répondre

1

Je suis sûr qu'il existe, mais la question que vous devriez vous poser est "Quel est le meilleur moyen de trouver des fichiers qui ont des extensions spécifiques?".

Les expressions régulières sont et non la meilleure réponse à chaque question.

Je suggère simplement d'obtenir une liste de tous les fichiers et de les passer dans une fonction comme IsThisFileOneIWant(fileName,extensionList). C'est beaucoup plus facile que d'essayer d'utiliser des expressions régulières dans votre problème.

Quelque chose comme ça devrait le faire:

function IsThisFileOneIWant(fileName,extensionList): 
    for each extension in extensionList: 
     if fileName.endsWith (extension): 
      return true 
    return false 

Fait en pseudo-code, car il devrait être assez simple pour se transformer en toute autre langue.

Si vous doit avoir une expression régulière, il va ressembler à quelque chose comme (basé sur les valeurs de votre question):

"ASPX$|ASCX$|\.js$|\.rpt$|\.xml$" 

mais cela dépend entièrement du moteur RE que vous souhaitez utiliser. Par exemple, voici la sortie d'une commande egrep dans mon répertoire de travail:

[email protected]:~/work$ ls -1 | egrep '\.sh$|\.c$' 
    backup0.sh 
    backup1.sh 
    eclipse.sh 
    monbt.sh 
    qq.c 
    qq.sh 
    xx yy.sh 
+0

Je suis d'accord avec votre point de vue. Mais dans mon cas, regex est la seule solution. S'il vous plaît aidez-moi avec ma question –

+0

@Pax: Par souci de lisibilité, je pense que j'utiliserais cette expression régulière: ". \. (Aspx | ascx | js | rpt | xml) $". À part ça, j'appuie votre première déclaration. ;-) +1 – Tomalak

1

En supposant que vous avez une liste de fichiers et que vous recherchez .pdf, CHM et .doc, vous pouvez vérifier avec:

\.pdf$|\.chm$|\.doc$

Regex devrait fonctionner au-dessus si vous le vérifier des noms de fichiers simples.

3

Cela fonctionne dans Bash:

find . -regex '.*\\.\\(pdf\|chm\|doc\\)' 
Questions connexes