найти с помощью -regex flag ti match files - PullRequest
2 голосов
/ 02 июля 2010

в каталоге / tmp У меня есть следующие файлы

 file1
 file2

когда я запускаю следующую команду поиска с -regex, команда поиска не соответствует файлам почему?

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

Ответы [ 2 ]

2 голосов
/ 02 июля 2010

со страницы man find:

-regex шаблон

Имя файла соответствует шаблону регулярного выражения. Это совпадение на всем пути, а не поиск. Например, чтобы сопоставить файл с именем ./fubar3, вы можете использовать регулярное выражение .*bar. или .*b.*3, но не f.*r3.

Кроме того, \d и {m,n} не поддерживаются. Следующие работы:

find /tmp -regex ".*file[0-9]+$"
0 голосов
/ 02 июля 2010

Я полагаю, это Unix.find /tmp -type f -exec grep -il "whatever_you_want_in_file" {} \;, который рекурсивно ищет записи в / tmp, но вы, вероятно, хотите ls -a | grep file[0-9][0-9]?[0-9]? только для / tmp или find /tmp -regexp "file[0-9][0-9]?[0-9]?" Не все оболочки поддерживают \ d как подстановочный знак из одной цифры, также / не требуется.Я знаю, что это используется в качестве заданий в Perl.

...