Форум программистов, компьютерный форум, киберфорум
Наши страницы
Shell, Bash
Войти
Регистрация
Восстановить пароль
 
Serg20083
0 / 0 / 0
Регистрация: 04.11.2019
Сообщений: 13
1

Поиск в диапазоне

25.11.2019, 13:11. Просмотров 282. Ответов 13

Имеется каталог home/zadacha с набором файлов и именами типа 01.02.2019.....31.10.2019 как создать текстовый файл и записать туда все имена файловимя которых содержит 01.03.2019...12.04.2019 и имеет права доступа data-www.
Права доступа такие имеют файлы 03.03.2019 и 03.04.2019.
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.11.2019, 13:11
Ответы с готовыми решениями:

13

Marinero
Модератор
Эксперт NIX
2389 / 1860 / 627
Регистрация: 02.03.2015
Сообщений: 6,063
25.11.2019, 13:18 2
Цитата Сообщение от Serg20083 Посмотреть сообщение
имеет права доступа data-www
Какие именно права: чтение/запись/исполнение?
0
Serg20083
0 / 0 / 0
Регистрация: 04.11.2019
Сообщений: 13
25.11.2019, 14:30  [ТС] 3
В задании не уточняется. просто права отдельные от других у прочих файлов ivan:ivan владелец файлов вот так проще написать

Добавлено через 1 минуту
не пойму как к поиску find прикрутить выбор файлов в таком диапазоне
и можно ли сделать это через цикл

Добавлено через 58 секунд
если учесть что я только начинаю все это учить то для меня такие задачи сложные. Поэтому сильно строго не судите. И Спасибо Всем за помощь.
0
nezabudka
1067 / 428 / 158
Регистрация: 28.06.2015
Сообщений: 995
Записей в блоге: 15
25.11.2019, 16:33 4
Может так?
Bash
1
ls -l {0[1-9],1[0-2]}.0[34].2019 | grep "data-www" | cut -d' ' -f9 >file_name.log
0
25.11.2019, 16:33
Serg20083
0 / 0 / 0
Регистрация: 04.11.2019
Сообщений: 13
25.11.2019, 17:13  [ТС] 5
Пишет невозможно получить доступ к {} нет такого файла или каталога
0
nezabudka
1067 / 428 / 158
Регистрация: 28.06.2015
Сообщений: 995
Записей в блоге: 15
25.11.2019, 19:05 6
Serg20083, А что сообщает ваша man страничка?
Bash
1
LESS=+/"Brace expansion" man bash
Добавлено через 6 минут
В крайнем случае проведите эксперимент
Bash
1
2
echo {1..10}
echo 0{1,2}
Добавлено через 12 минут
Вот мой вывод, У меня по умолчанию включено brase expansion
Bash
1
2
3
4
5
6
set -B
echo 0{1,2}
01 02
set +B
ech 0{1,2}
0{1,2}
0
Marinero
Модератор
Эксперт NIX
2389 / 1860 / 627
Регистрация: 02.03.2015
Сообщений: 6,063
25.11.2019, 23:37 7
Цитата Сообщение от nezabudka Посмотреть сообщение
ls -l ... | grep
Я просто умиляюсь...
Bash
1
find $HOME/zadacha -type f -name '[0-3][0-9].[0-1][0-9].2019' -user 'data-www' -fprint file_name.log
1
nezabudka
1067 / 428 / 158
Регистрация: 28.06.2015
Сообщений: 995
Записей в блоге: 15
26.11.2019, 07:20 8
Marinero, необходимо добавить
-o -group 'data-www'

Добавлено через 11 минут
и таже маска с brace expantion в файнд уже не будет работать и необходимо добавить
Bash
1
-a -name '...'
Я специально выбрала для этого команду ls, в данном случае мне показалось это проще
чем вводить две маски файлов, две маски - группы и владельца плюс вероятно -maxdepth
если написать полную аналогию то выйдет более громоздко
0
Marinero
Модератор
Эксперт NIX
2389 / 1860 / 627
Регистрация: 02.03.2015
Сообщений: 6,063
26.11.2019, 11:21 9
Цитата Сообщение от nezabudka Посмотреть сообщение
и необходимо добавить
нет. Достаточно сгруппировать скобками \( ... \) пользователя и группу (хотя я не уверен что это вообще нужно по условию задания)
0
Serg20083
0 / 0 / 0
Регистрация: 04.11.2019
Сообщений: 13
26.11.2019, 11:42  [ТС] 10
а как то можно сделать поиск что бы он искал файлы с диапазона имен. тоесть дата начала 01.02.2019 последняя дата 31.10.2019 и он выбрал определенные даты например все в которых есть 03. а затем из записал в выходной файл. Там получается в цикле поиск должен быть или как?

Добавлено через 22 секунды
Спасибо, что помогаете мне )
0
volodin661
2440 / 1053 / 176
Регистрация: 10.12.2013
Сообщений: 3,583
26.11.2019, 14:34 11
Perl
1
say (Date.new("2019-02-01") .. Date.new("2019-10-31")).grep: *.day == 3
( язык Raku. это бывший perl6 )
0
Marinero
Модератор
Эксперт NIX
2389 / 1860 / 627
Регистрация: 02.03.2015
Сообщений: 6,063
26.11.2019, 18:00 12
Цитата Сообщение от Serg20083 Посмотреть сообщение
дата начала 01.02.2019 последняя дата 31.10.2019
Bash
1
\( -name '03.0[2-9].2019' -o -name 03.10.2019 \)
0
Serg20083
0 / 0 / 0
Регистрация: 04.11.2019
Сообщений: 13
28.11.2019, 18:31  [ТС] 13
Ребята помогите еще пожалуйста. Вот что я с Вашей помощью сварганил
find /home/zadacha -type f -name '[0-3].[0-9].[0-0][4-5].2019' -user 'jboss' -fprint list.log sed -e '/^\//i\\' list.log

получается файл list.log

и там 2 наименования через пустую строку все как надо все красиво.
но как сюда вставить еще поиск по группе помогите.
условие jboss:br4j тоесть по user 'jboss' все обрабатывается а по группе нет.
0
Marinero
Модератор
Эксперт NIX
2389 / 1860 / 627
Регистрация: 02.03.2015
Сообщений: 6,063
29.11.2019, 15:08 14
Внимательно читаем
Цитата Сообщение от Marinero Посмотреть сообщение
сгруппировать скобками \( ... -o ...\) пользователя и группу
0
29.11.2019, 15:08
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.11.2019, 15:08

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:

14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.