команда find с -regex и -exec, требуется помощь regex - PullRequest
0 голосов
/ 08 декабря 2010

У меня есть каталог с кучей изображений людей. К сожалению, система, из которой поступают изображения, имеет свои уникальные идентификаторы для группы изображений людей, которые не используются ни в каких других системах в бизнесе (то есть у гостей есть фотография, но на самом деле ее нет в базе данных сотрудника / клиента ... только в хранилище сервера изображений). К счастью, изображения из 8 или более целых чисел с последующим расширением нежелательны (я видел .bmp и .jpg ... но могут быть и другие). Я попытался выполнить следующую команду поиска в качестве теста, прежде чем поменять ls -lh на rm -f и выполнить сценарий удаления фотографий для других систем. Я предполагаю, что я неправильно понимаю регулярные выражения, как это обычно бывает, но везде, где я выгляжу уверенным, кажется, что следующее должно работать для того, что я ищу. \ D {8,}, похоже, не работает, так как при удалении он находит все просто замечательно, но я не хочу ничего ... только те, у которых 8 или более целых чисел, за которыми следует что угодно. Что я здесь пропускаю?

find /path/to/dir -regex '\/path\/to\/dir\/\d{8,}.*' -exec ls -lh {} \;

Спасибо.

1 Ответ

4 голосов
/ 08 декабря 2010

Я не знаю, являются ли find типы регулярных выражений системно-зависимыми. Я видел в Linux, что у него есть несколько типов регулярных выражений (POSIX отличается от Emacs). Кажется, что регулярное выражение по умолчанию в find похоже на emacs. Я видел, что find также имеет опцию -regextype, поэтому, используя posix-extended, вы можете получить нечто похожее на то, что вы хотите:

find /path/to/dir -regextype posix-extended -regex '/path/to/dir/[0-9]{8,}.*' -exec ls -lh {} \;

но у вас нет \d для этих типов регулярных выражений (я думаю, что они происходят только из регулярных выражений типа Perl), и вам не нужны обратные слэши для /. Во всяком случае, эти работы.

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