2010-08-31 3 views
4

Я пытаюсь найти все длинные имена файлов в каталоге с помощью:Найти длинные имена файлов, используя GNU найти -regex

find . -regex './[^/]\{5,\}.txt' 

В соответствии с GNU найти документацию, -regex использует регулярное выражение Emacs по умолчанию. Таким образом, это должно дать мне все файлы длиной более 5 символов (исключая расширение). К сожалению, это не сработает. Он ничего не соответствует. Я пробовал различные варианты этой темы, но безрезультатно. Есть идеи? Находит ли GNU просто не поддержку квалификатора повторения?

ответ

3

Добавить

-regextype posix-extended 

и нет необходимости, чтобы избежать {}

find . -regextype posix-extended -regex './[^/]{5,}.txt' 
+1

Помните, что '.' является регулярное выражение метасимволом, так что это должно быть' -regex '\ ./ [^ /] {5} \. Txt'' (да, первый '.' Безразлично' t нужна обратная косая черта в этом конкретном случае, но вы действительно хотите подумать, почему каждый раз, когда вы смотрите на команду?). И поскольку вы не смотрите внутрь подкаталогов, добавьте '-maxdepth 1', это сэкономит много времени, если есть много подкаталогов. – Gilles

2

почему так сложно?

find /path -type f -iname "??????*.txt" 
+1

Я не хочу, чтобы считать персонажей ... 5 - это просто пример. Это должно быть намного больше, и оно может меняться, поэтому я хочу, чтобы это было легко изменить. – Pascal

Смежные вопросы