2010-10-29 7 views
1

je cherche à rechercher dans dir ...regex pour trouver la date dir

a2010-02-10

comment rechercher ls dir tout avec le format de date

ls -d *(\d+)-(\d+)-(\d+) 

sa ne fonctionne pas comme perl

ce qui est le format

Répondre

3

Votre regex semble être correct, mais bash d ne supporte pas les expressions régulières complètes. Il prend en charge wildcards, ce qui ne peut pas toujours fonctionner de la même manière. Essayez ceci:

ls -d | grep -E '(\d+)-(\d+)-(\d+)$' 

Et vraiment, les groupes (\d+) pourraient être remplacés par tout \d+.

Si vous préférez une solution pure bash, essayez ceci:

ls -d *[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9] 

Vous pouvez simplifier que, pour être moins exact si on le souhaite:

ls -d *[0-9]*-[0-9]*-[0-9]* 

Mais je vais pour utiliser grep parce que c'est beaucoup plus clair ce que tu veux. Vous pouvez le rendre encore plus clair:

ls -d | grep -E '\d{4}-\d{2}-\d{2}$' 
0

Avec shopt -s extglob, vous pouvez faire:

ls -d *+([0-9])-+([0-9])-+([0-9])