Как я могу найти соответствие шаблону определенное количество раз?

У меня есть куча файлов с расширениями, которые представляют собой числа с разным количеством цифр. Я хочу найти, чтобы показать мне все с тремя цифрами, но не могу найти хороший способ сделать это. Следующее работает, но кажется неуклюжим:

find . -name "*.[0-9][0-9][0-9]"

Похоже, должен быть какой-то способ указать, сколько раз шаблон должен отображаться. Что, если бы я хотел поймать все с тремя или четырьмя цифрами, но не с двумя или пятью? Должен ли я использовать этот нелепый шаблон с ключом -o?


person William Everett    schedule 25.06.2013    source источник


Ответы (2)


Не используйте для этого переключатель -name. Вам нужно использовать find -regex

find . -regex "^.*\.[0-9]\{3,4\}$"

Это найдет все имена файлов с 3 или 4 цифрами в расширении.

person anubhava    schedule 25.06.2013
comment
Это сработало. Я пробовал что-то подобное раньше, но случайно избежал звездочки, а не точки. Большое спасибо! - person William Everett; 26.06.2013
comment
Пожалуйста, рад, что все получилось. (Не уверен, почему кто-то проголосовал за него без каких-либо комментариев). - person anubhava; 26.06.2013
comment
Я тоже не уверен. Я заметил, что за другой ответ, похоже, также проголосовали без комментариев (хотя он был не совсем правильным, поэтому, возможно, именно поэтому за него проголосовали). - person William Everett; 26.06.2013
comment
Это раздражает, когда люди голосуют против рабочего решения, не оставляя комментариев к SO. - person anubhava; 26.06.2013

Поместите количество повторений в фигурные скобки:

[0-9]{3}
person Joseph Silber    schedule 25.06.2013
comment
Спасибо, но сопоставление шаблонов в стиле posix, похоже, не работает с find. - person William Everett; 26.06.2013