2010-07-02 6 views
2

sous le répertoire/tmp j'ai les fichiers suivantstrouver des fichiers match -regex flag ti

file1 
file2 

quand je lance la commande find suivante avec -regex, trouver commande ne correspondent aux fichiers pourquoi?

find /tmp -regex '/file(\d{1,3})/' 

Répondre

2

Sur la page man find:

-regex modèle

Nom du fichier correspond au modèle d'expression régulière. C'est une correspondance sur tout le chemin, pas une recherche. Par exemple, pour correspondre à un fichier nommé ./fubar3, vous pouvez utiliser l'expression régulière .*bar. ou .*b.*3, mais pas f.*r3.

En outre, \d et {m,n} ne semble pas être pris en charge. Les travaux suivants:

find /tmp -regex ".*file[0-9]+$" 
0

Je suppose que c'est unix. find /tmp -type f -exec grep -il "whatever_you_want_in_file" {} \; qui recherche récursive pour les entrées dans le répertoire/tmp mais vous voulez probablement ls -a | grep file[0-9][0-9]?[0-9]? pour/tmp uniquement ou find /tmp -regexp "file[0-9][0-9]?[0-9]?" Pas tout le soutien des obus \ d comme une carte sauvage à un chiffre, aussi/n'est pas nécessaire. Je sais que c'est utilisé comme devoir en Perl.