Добрый день.
Подскажите пожалуйста.
Запутался, пишу скрипт на sh в помощь сортировке логов.
Допустим, есть дира /mnt/das, в ней поддиректории 2015/2016/2017 и т.д.
В них архивы.
Пробую вывести информацию в консоли.
Так работает:
ls -al /mnt/das/[0-9][0-9][0-9][0-9]/[0-9]{1,2}/*.zip
ls -al /mnt/das//20{16,17,18,19,20}/[0-9]{1,2}/*.zip
А так не работает.
ls -al /mnt/das/20[0-9]{1,2}/[0-9]{1,2}/*.zip
Не пойму почему?
ls динамическая переменная (регулярные выражения.)
Модераторы: /dev/random, Модераторы разделов
ls динамическая переменная
Настройка BSD систем
Знание сила, незнание Рабочая сила!
Знание сила, незнание Рабочая сила!
- Bizdelnick
- Модератор
- Сообщения: 20791
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: ls динамическая переменная
Потому что это не регулярные выражения, и фигурные скобки здесь имеют совсем другое значение.
https://www.gnu.org/software/bash/manual/html_node/Brace-Expansion.html
https://www.tldp.org/LDP/abs/html/special-chars.html#BRACEEXPREF
Да и то не особо переносимо между шеллами. В dash не работает, например.
Те команды, которые у Вас якобы «работают», тоже выводят далеко не то, чего Вы от них ожидаете.
https://www.gnu.org/software/bash/manual/html_node/Brace-Expansion.html
https://www.tldp.org/LDP/abs/html/special-chars.html#BRACEEXPREF
Да и то не особо переносимо между шеллами. В dash не работает, например.
Добавлено (18:32):
То есть запись ls -al /mnt/das/20[0-9]{1,2}/[0-9]{1,2}/*.zip bash раскрывает как ls -al /mnt/das/20[0-9]1/[0-9]1/*.zip /mnt/das/20[0-9]1/[0-9]2/*.zip /mnt/das/20[0-9]2/[0-9]1/*.zip /mnt/das/20[0-9]2/[0-9]2/*.zip, после чего ищет совпадения по этим четырём шаблонам.Те команды, которые у Вас якобы «работают», тоже выводят далеко не то, чего Вы от них ожидаете.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Спасибо сказали:
Re: ls динамическая переменная
Ясно.Bizdelnick писал: ↑03.08.2020 18:26Потому что это не регулярные выражения, и фигурные скобки здесь имеют совсем другое значение.
https://www.gnu.org/software/bash/manual/html_node/Brace-Expansion.html
https://www.tldp.org/LDP/abs/html/special-chars.html#BRACEEXPREF
Да и то не особо переносимо между шеллами. В dash не работает, например.Добавлено (03.08.2020 18:32):
То есть запись ls -al /mnt/das/20[0-9]{1,2}/[0-9]{1,2}/*.zip bash раскрывает как ls -al /mnt/das/20[0-9]1/[0-9]1/*.zip /mnt/das/20[0-9]1/[0-9]2/*.zip /mnt/das/20[0-9]2/[0-9]1/*.zip /mnt/das/20[0-9]2/[0-9]2/*.zip, после чего ищет совпадения по этим четырём шаблонам.
Те команды, которые у Вас якобы «работают», тоже выводят далеко не то, чего Вы от них ожидаете.
Команды выводят верную информацию.
Ладно, буду разбираться.
А как тогда лучше сделать задуманное?
Последний раз редактировалось bars 03.08.2020 20:47, всего редактировалось 1 раз.
Настройка BSD систем
Знание сила, незнание Рабочая сила!
Знание сила, незнание Рабочая сила!
- Bizdelnick
- Модератор
- Сообщения: 20791
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: ls динамическая переменная
Точно? Архивы с марта по октябрь не потеряли ли?
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Спасибо сказали:
Re: ls динамическая переменная
А почему именно марта по октябрь?
Вы правы, сейчас более подробно посмотрел вывод, спасибо.
Остановился пока на таком методе
ls -al /mnt/das/20[0-9][0-9]/[0-9][0-9]/*.zip
Настройка BSD систем
Знание сила, незнание Рабочая сила!
Знание сила, незнание Рабочая сила!
- Bizdelnick
- Модератор
- Сообщения: 20791
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: ls динамическая переменная
Ну может быть, и за январь-февраль тоже, если они 1 и 2, а не 01 и 02.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
- Hephaestus
- Сообщения: 3729
- Статус: Многоуважаемый джинн...
- ОС: Slackware64-14.1/14.2
- Контактная информация:
Re: ls динамическая переменная
Использовать не ls, а что-нибудь другое.
Например, find. Умеет регулярки, если уж так хочется их использовать.
Re: ls динамическая переменная
Да сделал через ls [0-9][0-9] (Вроде рабочий вариант) - стало просто интересно, через финд знаю.Hephaestus писал: ↑04.08.2020 13:53Использовать не ls, а что-нибудь другое.
Например, find. Умеет регулярки, если уж так хочется их использовать.
Настройка BSD систем
Знание сила, незнание Рабочая сила!
Знание сила, незнание Рабочая сила!