Найти файлы, начинающиеся с буквы c, используя утилиту поиска с опцией -regex - PullRequest
1 голос
/ 13 января 2020

Пытался использовать опцию regex в команде find, но безрезультатно.

Учитывая этот пример каталога "dir", который содержит:

file1.txt 

file2.txt
Linux.txt
LInux.txt

Итак, я хочу, например, найдите все файлы в каталоге dir, которые начинаются с "L", и выполните:

find  dir -type f -regex ".*/^L"

Хотя это не приводит к выводу. Что с этим не так?

1 Ответ

1 голос
/ 13 января 2020

Шаблон .*/^L является примером регулярного выражения, которое никогда не будет соответствовать ни одной строке. ^ соответствует началу строки, и после / не может быть начала строки.

Шаблон регулярного выражения find должен соответствовать всей строке, он привязан по умолчанию. Итак, шаблон, который вам нужен:

.*/L[^/]*

Это эквивалентно ^.*/L[^/]*$: соответствует началу строки, затем любым 0+ символам, до последнего /, за которым следуют 0 или более символов, отличных от / до конца строки. Вы не можете использовать .* после L, потому что он может совпадать с каталогами , которые начинаются с L, поскольку . соответствует любому символу, а выражение [^/] с отрицательными скобками соответствует всем символам, но / и, следовательно, не могут совпадать /, разделители каталогов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...