2014-11-10 3 views
0

просмотра назад я пытаюсь соответствовать всем файлам, которые не заканчиваются на jpg/png/jpeg/gif, и которые также не имеют файла, начиная с ..Regex для имен файлов без использования

Я передаю это регулярное выражение в find так:

find -E path/to/dir myregex 

Вот регулярное выражение

^.*\/[^\.].*\.(?!jpeg$)(?!jpg$)(?!gif$)(?!png$)([^jgp]..|j[^p].|g[^i].|p[^n].|jp[^g]|gi[^f]|pn[^g]|jpg.+|png.+|gif.+|jpe[^g]|jpeg.+)[^\.]*$ 

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

Я не думаю, что версия find, которую я использую (OS X Mavericks), поддерживает lookbehind, но даже если бы это было так, я хотел бы знать, есть ли альтернатива.

Вот интерактивная версия: http://regex101.com/r/xD9qC2/1

+0

Вы уверены, что 'find' поддерживает прогностическое? Я посмотрел документацию Mac на 'find' и' re_format', но я ничего не вижу о перспективах. – nhahtdh

+1

Вы считали «найти путь/to/dir -not -iname» * .jpg «-not -iname» * .jpeg «-not -iname» * .png «-not -iname» * .gif «-not - iname ". *" '? –

+0

@Ken Спасибо, что указали это. Я не знал об этом -не или -не. Думаю, я должен RTFM. –

ответ

1

Извините за себя Q & А здесь. Я потратил некоторое время на размышление об этом, прежде чем публиковать свой вопрос, но сразу после публикации у меня появилось некоторое представление.

Это немного длинный, но он менее грубый, чем тот, в вопросе.

(?:^.{1,3}$)|(?:^(?!\.(?:jpg|gif|png)$).{4}$)|(?:^.*(?!.*\.(?:jpg|gif|png|jpeg)$).{5}$) 

Interactive link

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