С Новым годом! Форум программистов, компьютерный форум, киберфорум
Shell, Bash
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.68/25: Рейтинг темы: голосов - 25, средняя оценка - 4.68
 Аватар для Nolwelin
45 / 2 / 0
Регистрация: 24.05.2018
Сообщений: 30

Найти файлы в определенном каталоге, содержащие определенные символы

09.11.2018, 17:16. Показов 5703. Ответов 22

Студворк — интернет-сервис помощи студентам
Здравствуйте, помогите, пожалуйста разобраться.

Делаю лабораторную работу по Операционным системам, впервые пришлось использовать ОС Ubuntu, поэтому вообще все трудно доходит...
Задание такое:
Создать скрипт, имеющий два входных параметра: имя каталога и набор символов.

Скрипт выполняет действия:

1) вывод на экран перечня файлов, «дочерних» к заданному каталогу, которые имеют в своем имени заданный набор символов;
2) уничтожение всех остальных файлов заданного каталога;

Поискав похожие темы - стало понятно, что нужно использовать find.
Когда ввожу в терминале: find -path "*dirname*/*symbol*" - все работает, но когда запускаю скрипт с точно такой же строкой - и передаю туда dirname и symbol - вместо поиска - он создает текстовый файл с именем dirname в каталоге Home.

Что нужно изменить в скрипте, чтобы он искал нужные файлы?

Или может быть я неправильно передаю параметры?

Скрин прилагаю.
Миниатюры
Найти файлы в определенном каталоге, содержащие определенные символы  
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.11.2018, 17:16
Ответы с готовыми решениями:

Рекурсивно найти файлы в заданном каталоге содержащие заданную строку
Написать скрипт для поиска заданной пользователем строки во всех файлах заданного каталога и всех его подкаталогов (строка и имя каталога...

Найти файлы содержащие определенные строки, удалить дубли строк
Добрый день, господа Линуксоиды:) прошу помощи с написанием shell скрипта ______________________________________ Написать...

Поиск файлов в каталоге и вывод строк содержащие определенные слова
find -name 'filename' -execgrep {} $name \; Подскажите в чем ошибка и правильно ли я делаю Выдает ошибку missing argument to -exec

22
Эксперт NIX
 Аватар для Marinero
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
09.11.2018, 17:34
Цитата Сообщение от Nolwelin Посмотреть сообщение
апускаю скрипт с точно такой же строкой - и передаю туда dirname и symbol
Так скрипт покажите
1
 Аватар для Nolwelin
45 / 2 / 0
Регистрация: 24.05.2018
Сообщений: 30
09.11.2018, 17:37  [ТС]
Цитата Сообщение от Marinero Посмотреть сообщение
Так скрипт покажите
я его в скрине скинула. там одна строка пока что.
Bash
1
find -path "*$1*/*$2*"
0
Эксперт NIX
 Аватар для Marinero
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
09.11.2018, 19:00
Лучший ответ Сообщение было отмечено Nolwelin как решение

Решение

Насколько я разобрал строка в файле new, а запускаете new.sh
1
 Аватар для Nolwelin
45 / 2 / 0
Регистрация: 24.05.2018
Сообщений: 30
09.11.2018, 23:26  [ТС]
Цитата Сообщение от Marinero Посмотреть сообщение
Насколько я разобрал строка в файле new, а запускаете new.sh
Это мегафэйл. Я три часа убила(((( Спасибо Вам огромное!!!!!

Добавлено через 4 часа 8 минут
Marinero, посмотрите, пожалуйста скрипт, все, что нужно он делает, но можно ли его упростить?
Bash
1
2
3
#! /bin/bash
find "$1" -maxdepth 1 -type f -iname "*$2*"                #поиск файлов, в имени которых есть введенные символы
rm -f `find "$1" -maxdepth 1 -type f -not -iname "*$2*"` #удаление файлов, которые не содержат введенные символы
0
 Аватар для Kukstyler
1260 / 870 / 268
Регистрация: 02.04.2009
Сообщений: 3,306
09.11.2018, 23:46
Nolwelin, поробуйте:

Bash
1
find "$1" ! -name "*$2*" -type f -exec rm -f {} \;
1
 Аватар для Nolwelin
45 / 2 / 0
Регистрация: 24.05.2018
Сообщений: 30
09.11.2018, 23:58  [ТС]
Цитата Сообщение от Kukstyler Посмотреть сообщение
1
find "$1" ! -name "$2" -type f -exec rm -f {} \;
у меня почему-то удаляет все файлы, а не те в которых нет символов

Добавлено через 2 минуты
Kukstyler, все, разобралась, если звездочки подставить ("*$2*"), то удаляет то что нужно.

Спасибо!
0
Эксперт NIX
 Аватар для Marinero
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
10.11.2018, 12:58
Kukstyler,
Цитата Сообщение от Nolwelin Посмотреть сообщение
-exec rm -f {} \;
Заменить на -delete
2
 Аватар для Kukstyler
1260 / 870 / 268
Регистрация: 02.04.2009
Сообщений: 3,306
10.11.2018, 20:38
Marinero, последнее время сижу на AIX, а там много чего кастрировано.
0
 Аватар для Nolwelin
45 / 2 / 0
Регистрация: 24.05.2018
Сообщений: 30
20.11.2018, 21:03  [ТС]
Цитата Сообщение от Kukstyler Посмотреть сообщение
1
find "$1" ! -name "*$2*" -type f -exec rm -f {} \;

Проверили мою лабораторную, работа зачтена, но есть замечание преподавателя:


должно быть примерно следующее:
rm –r `find $1 \! –name $2 –a \! –type d`.
Всем спасибо за помощь!
0
 Аватар для Kukstyler
1260 / 870 / 268
Регистрация: 02.04.2009
Сообщений: 3,306
21.11.2018, 00:28
Цитата Сообщение от Nolwelin Посмотреть сообщение
должно быть
а почему именно должно быть так, преподаватель не объяснял?
0
 Аватар для Nolwelin
45 / 2 / 0
Регистрация: 24.05.2018
Сообщений: 30
21.11.2018, 11:22  [ТС]
Цитата Сообщение от Kukstyler Посмотреть сообщение
а почему именно должно быть так, преподаватель не объяснял?
Я заочно учусь, поэтому мне просто прислали рецензию на лабораторную работу, без разъяснений.
0
Эксперт NIX
 Аватар для Marinero
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
21.11.2018, 12:07
Цитата Сообщение от Nolwelin Посмотреть сообщение
заочно учусь
Ну если только сдать и забыть. А так: не учитесь у Вашего преподавателя - плохому он обучает. Я бы сисадмина написавшего
Цитата Сообщение от Nolwelin Посмотреть сообщение
rm –r `find $1 \! –name $2 –a \! –type d`
даже на работу не принял. Тоже без объяснения.
Например потому, что find может выдать какую-то ошибку, текст которой "разберет" rm и удалит что-то совсем не то. Не говоря уже об элементарном: что имена файлов могут быть с пробелами, кторые опять же эта конструкция не отработает.
1
 Аватар для Nolwelin
45 / 2 / 0
Регистрация: 24.05.2018
Сообщений: 30
21.11.2018, 12:42  [ТС]
Цитата Сообщение от Marinero Посмотреть сообщение
Ну если только сдать и забыть
Вот так я совсем не хочу.

Цитата Сообщение от Marinero Посмотреть сообщение
Например потому, что find может выдать какую-то ошибку, текст которой "разберет" rm и удалит что-то совсем не то. Не говоря уже об элементарном: что имена файлов могут быть с пробелами, кторые опять же эта конструкция не отработает.
Теперь понятно, спасибо огромное!
0
 Аватар для Kukstyler
1260 / 870 / 268
Регистрация: 02.04.2009
Сообщений: 3,306
23.11.2018, 23:14
Цитата Сообщение от Nolwelin Посмотреть сообщение
мне просто прислали рецензию на лабораторную работу, без разъяснений.
Было бы конечно неплохо, показать Вашему преподу доводы Marinero! Хотя толку... Только взъестся на Вас.

Не по теме:


Не первый раз встречаюсь с выпендрёжем преподавателя, который скорее всего не имеет (почти) никакой практики за плечами (это я к тому, что даже лучший теоретик, коим Ваш препод очевидно тоже не является, не может знать того, чему обучаешься на практике).
Я бы в преподы тоже не брал, без рабочего стажа в реальных проектах меньше 5-ти лет (хотя бы).

1
 Аватар для volodin661
6671 / 2264 / 346
Регистрация: 10.12.2013
Сообщений: 7,827
24.11.2018, 04:26
Цитата Сообщение от Kukstyler Посмотреть сообщение
Было бы конечно неплохо, показать Вашему преподу доводы. Только взъестся на Вас.
А при чём тут 'препод' ? Это общечеловеческое.

Попробуй для эксперимента доказать кому-нибудь хоть что-нибудь ЗДЕСЬ ( на форуме ).

Если при этом назовешь оппонента невеждой и неучем, тебя ещё поймут, но если будешь приводить в защиту своей точки зрения разумные аргументы, поимеешь сразу порцию ненависти.
1
 Аватар для Kukstyler
1260 / 870 / 268
Регистрация: 02.04.2009
Сообщений: 3,306
24.11.2018, 23:25
Цитата Сообщение от volodin661 Посмотреть сообщение
Попробуй для эксперимента доказать кому-нибудь хоть что-нибудь ЗДЕСЬ ( на форуме ).
Пробовал, и не раз. И т.к. человек я принципиальный, бился до последнего. Но в целом, согласен, что затея сия не из лёгких, и смысла в ней особого нет. Хотя, лично я делал это скорее для того, что бы прочитавшие тему люди, ищущие достоверную информацию, не натыкались на фигню и выпендрёж.

Цитата Сообщение от volodin661 Посмотреть сообщение
А при чём тут 'препод' ? Это общечеловеческое.
Препод, на мой взгляд тут вот причём - в отличии от форумчан, у которых де факто ответственности ровно столько, сколько им это позволяют их собственные морально-этические устои либо просто желание. Т.е. они/мы как форумчане, официально не несём никакой ответственности перед тем, кто ставит вопрос, за наши ответы. Вещая истину, или неся полный бред, спрос с нас, реально = 0.
А вот Препод, занимает рабочую вакансию человека, официально взявшего на себя ответственность передачи достоверных знаний студенту. Именно знаний ("что" + "почему"), а не информации (просто "что").
Вне морально-этических качеств Препода (которые в данной профессии, а скорее даже в данном призвании должны быть, по меньшей мере, "выше среднего"), Препод получает за это дело деньги. А тут, уж извините, вопрос становится классически - ничего личного, только бизнес. Некачественные знания, в данном случае, тождественны некачественному продукту, за которые заказчик заплатил деньги. Да ещё и поймёт, что исполнитель его надул поздно, когда запустит продукт в продукцию (начнёт работать).

Цитата Сообщение от volodin661 Посмотреть сообщение
Если при этом назовешь оппонента невеждой и неучем, тебя ещё поймут, но если будешь приводить в защиту своей точки зрения разумные аргументы, поимеешь сразу порцию ненависти.
Согласен на все 100%!
1
0 / 0 / 0
Регистрация: 04.02.2017
Сообщений: 6
19.02.2024, 05:52
Добрый день. так же учусь на заочке. выполняю лабораторную работу. Данное задание. Хочу попросить помощи в разъяснении данного кода.

Что означает в коде "$1" и "*$2*" ?

Bash
1
2
3
#! /bin/bash
find "$1" -maxdepth 1 -type f -iname "*$2*"                #поиск файлов, в имени которых есть введенные символы
rm -f `find "$1" -maxdepth 1 -type f -not -iname "*$2*"` #удаление файлов, которые не содержат введенные символы
0
Эксперт NIX
3303 / 932 / 200
Регистрация: 14.01.2013
Сообщений: 4,767
19.02.2024, 06:38
Цитата Сообщение от Vitalya70 Посмотреть сообщение
Что означает в коде "$1" и "*$2*" ?
Параметры, переданные скрипту. Если запускать скрипт как-то так:
Bash
1
myscript.sh var1 var2
то $1 - это var1, $2 - это var2.
1
0 / 0 / 0
Регистрация: 04.02.2017
Сообщений: 6
19.02.2024, 07:25
Спасибо за ответ. можете картинку посмотреть, прикрепляю. Данную работу разбираю по частям. У самого знания программирования нет. Хочу сдать работу не для галочки, а разобраться что делает скрип. А можете объяснить глядя на код программы, что делают эти две строчки для особо одаренных.
и звездочки для $2 что означает?

Bash
1
2
find "$1" -maxdepth 1 -type f -iname "*$2*" 
rm -f 'find "$1" ! -name  "*$2*" - type f - exec rm -f {} \;'
Миниатюры
Найти файлы в определенном каталоге, содержащие определенные символы  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.02.2024, 07:25
Помогаю со студенческими работами здесь

Во втором каталоге которой указан в переменной PATH найти все файлы содержащие в названии букву "b"
Здравствуйте, поставлена такая задача: "Во втором каталоге которой указан в переменной PATH найти все файлы содержащие в названии букву...

Найти все файлы в каталоге
Здравствуйте. Нужно найти все файлы в каталоге, которые соответствуют шаблону. Шаблон для поиска я задаю так sox --help | grep -A 0...

Найти файлы по маске в заданном каталоге
Здравствуйте всем. На Virtual Box поставил Ubuntu. В ней выполняю лабораторную работу. Дано самостоятельное задание: "Поиск файлов...

Найти файлы содержащие строки
Всем привет. Есть n-ное количество php файлов, с таким содержимым: <?php //###=CACHE START=### ...

Найти файлы содержащие шаблон
Просят найти все файлы, содержащие шаблон "S". Что имеется в виду под шаблоном "S"?


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru