Я пытаюсь найти сжатые файлы журнала и выполнить с ними некоторые операции. Я не могу использовать ls, потому что это тысячи файлов в каталоге, а BASH выдает ошибку «список аргументов слишком длинный».
Это привело меня к поиску, но у меня возникли проблемы с моим регулярным выражением.
Вот вся команда поиска
find $i -regex '.*logfile_MP[0-9]-GW0[0-9]_2010-09-\(\([7-9]\)|\(1[0-9]\)|\(2[0-3]\)\)-.*' -exec ls {} \;
Мне действительно нужно пройти через несколько каталогов журналов, поэтому $ i происходит из цикла BASH, чтобы пройти по всем каталогам.
Сейчас я просто пытаюсь составить список файлов, поэтому я знаю, что у меня есть нужные файлы; Я исправлю свое утверждение -exec, как только оно заработает.
Проблема связана с разделом скобок:
\(\([7-9]\)|\(1[0-9]\)|\(2[0-3]\)\)
Я пытаюсь соответствовать диапазону дней (7-23). Из того, что я понимаю о режиме Emacs-regex, я должен убрать все скобки.
Остальная часть регулярного выражения работает, потому что, если я заменю секцию скобок только числом (например, 7), он будет работать нормально.
Может ли кто-нибудь помочь мне создать регулярное выражение для соответствия 7-23?
Спасибо.