ls динамическая переменная (регулярные выражения.)

На самом деле это единственный раздел про unix на этом форуме

Модераторы: /dev/random, Модераторы разделов

Ответить
Аватара пользователя
bars
Сообщения: 917
ОС: BSD/LINUX
Контактная информация:

ls динамическая переменная

Сообщение bars »

Добрый день.
Подскажите пожалуйста.
Запутался, пишу скрипт на 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

Не пойму почему?
Настройка BSD систем
Знание сила, незнание Рабочая сила!
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: ls динамическая переменная

Сообщение Bizdelnick »

Потому что это не регулярные выражения, и фигурные скобки здесь имеют совсем другое значение.
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, после чего ищет совпадения по этим четырём шаблонам.
Те команды, которые у Вас якобы «работают», тоже выводят далеко не то, чего Вы от них ожидаете.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
bars
Сообщения: 917
ОС: BSD/LINUX
Контактная информация:

Re: ls динамическая переменная

Сообщение bars »

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
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: ls динамическая переменная

Сообщение Bizdelnick »

bars писал:
03.08.2020 19:57
Команды выводят верную информацию.
Точно? Архивы с марта по октябрь не потеряли ли?
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
bars
Сообщения: 917
ОС: BSD/LINUX
Контактная информация:

Re: ls динамическая переменная

Сообщение bars »

Bizdelnick писал:
03.08.2020 20:08
Точно? Архивы с марта по октябрь не потеряли ли?
А почему именно марта по октябрь?
Вы правы, сейчас более подробно посмотрел вывод, спасибо.
Остановился пока на таком методе
ls -al /mnt/das/20[0-9][0-9]/[0-9][0-9]/*.zip
Настройка BSD систем
Знание сила, незнание Рабочая сила!
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: ls динамическая переменная

Сообщение Bizdelnick »

bars писал:
03.08.2020 20:43
А почему именно марта по октябрь?
Ну может быть, и за январь-февраль тоже, если они 1 и 2, а не 01 и 02.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
Hephaestus
Сообщения: 3729
Статус: Многоуважаемый джинн...
ОС: Slackware64-14.1/14.2
Контактная информация:

Re: ls динамическая переменная

Сообщение Hephaestus »

bars писал:
03.08.2020 19:57
А как тогда лучше сделать задуманное?
Использовать не ls, а что-нибудь другое.
Например, find. Умеет регулярки, если уж так хочется их использовать.
Пускай скрипят мои конечности.
Я - повелитель бесконечности...
Мой блог
Спасибо сказали:
Аватара пользователя
bars
Сообщения: 917
ОС: BSD/LINUX
Контактная информация:

Re: ls динамическая переменная

Сообщение bars »

Hephaestus писал:
04.08.2020 13:53
Использовать не ls, а что-нибудь другое.
Например, find. Умеет регулярки, если уж так хочется их использовать.
Да сделал через ls [0-9][0-9] (Вроде рабочий вариант) - стало просто интересно, через финд знаю.
Настройка BSD систем
Знание сила, незнание Рабочая сила!
Спасибо сказали:
Ответить