Intereting Posts
lpadmin добавить сетевой принтер Двойная загрузка монетного двора на поверхности Pro 3? Как я могу ожидать появления новой строки в сценарии ожидания? Найдите самые большие файлы или каталоги В Vim, как я могу копировать несколько строк? (не диапазон); Не удается запустить скрипт Perl FastCGI на сервере Apache: Ошибка 500 Использование команды cut для переменной окружения Есть ли правильный способ использовать один файл резервной копии VPS для создания клона VPS? команда: ls / etc | сортировать | grep d * не дает результатов, но ls / etc | сортировать | grep p * перечисляет всю директорию Все файлы вне / home / userabc принадлежат root? Как настроить интерфейс usb / ethernet в Linux? Могу ли я подключать любые два процесса друг к другу? Как обновить ядро ​​Debian до последних в backports Восстановление почтовых сообщений Maildir из резервной копии на другом компьютере (так что соглашения об именах файлов отличаются) как работает os в действии виртуального бокса, скорость оригинала os в ноутбуке

Найти регулярное выражение для метки времени в имени файла не работает

Я хочу найти почтовые файлы в user mailir, без mailfilter, dovecot-index и т. Д.

Все файлы электронной почты имеют временную метку unix в именах файлов, я думаю, что это самый простой способ.

Я использовал это регулярное выражение:. .*\/\d{10}\..* . Он работает хорошо в http://regexr.com/ tester, но не работает в командной строке find.

Полная командная строка: find /var/lib/exim4/mail/markelov -regextype sed -regex '.*\/\d{10}\..*' -type f

Не работает также скобка ( .*\/\d\{10\}\..* ).

Примеры строк: следует найти:

 /var/lib/exim4/mail/markelov/Maildir/.Sent/cur/1444787116.M8092P4423.mail,S=7264,W=7377:2,S /var/lib/exim4/mail/markelov/Maildir/.Sent/cur/1445824988.M900660P25060.mail,S=422,W=434:2,S /var/lib/exim4/mail/markelov/Maildir/.Trash/cur/1441681017.M637660P29838.mail,S=38938:2,Sa /var/lib/exim4/mail/markelov/Maildir/.Trash/cur/1441934431.M919612P29838.mail,S=1447:2,Sa 

Не следует находить:

 /var/lib/exim4/mail/markelov/Maildir/.INBOX.zabbix.Alerts/maildirfolder /var/lib/exim4/mail/markelov/Maildir/.INBOX.zabbix.Alerts/dovecot-uidlist /var/lib/exim4/mail/markelov/Maildir/subscriptions /var/lib/exim4/mail/markelov/Maildir/.INBOX.megaplan/dovecot.index 

find –version

 find (GNU findutils) 4.4.2 Copyright (C) 2007 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Written by Eric B. Decker, James Youngman, and Kevin Dalley. Built using GNU gnulib version e5573b1bad88bfabcda181b9e0125fb0c52b7d3b Features enabled: D_TYPE O_NOFOLLOW(enabled) LEAF_OPTIMISATION FTS() CBO(level=0) 

Проблема заключается в \d который не понимается в regex sed поэтому вы должны использовать класс символов цифр: [0-9] . Кроме того, sed для этого использования требуют предшествующих обратных косых черт. Вместо:

 .*\/\d{10}\..* 

пытаться

 .*\/[0-9]\{10\}\..* 

Если вы укажете -regextype posix-egrep вы будете использовать:

 .*\/[0-9]{10}\..* 

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

На веб-сайте regxr.com:

RegExr использует ваш механизм RegExp вашего браузера для соответствия, а подсветка синтаксиса и документация отражают стандарт JavaScript RegExp.

Что отчасти объясняет, почему регулярное выражение не работало с поиском.