Лабораторная работа. Поиск файлов - efanov/mephi GitHub Wiki
Подготовка
Изучите команды find, xargs, и grep с помощью команды man.
Создайте тестовый каталог. Свои команды проверять нужно находясь в каталоге test_finging
$ mkdir test_finding
$ cd test_finding
$ mkdir -p './-test dir/empty dir'
$ touch './-test dir'/{1..10}.sh
$ touch './-test dir'/{1..10}.txt
$ touch './-test dir'/{1..10}.bak
$ echo 'print echoing' > './-test dir'/1.sh
$ echo 'echo print' > './-test dir'/2.sh
$ echo 'too many errors' > './-test dir'/3.txt
$ echo 'are you looking an error here?' > './-test dir'/4.txt
$ echo 'There was a BIG ERROR.' > './-test dir'/5.txt
Задания
Используя команду find:
- Найдите все файлы и каталоги, имя которых содержит слово
pass, поиск начните с корневого каталога. - Найдите все файлы и каталоги, имя которых содержит слово
passбез учёта регистра, поиск начните с корневого каталога. - Найдите все файлы и каталоги, имя которых содержит слово
pass, ограничив глубину поиска одним каталогом, поиск начните с корневого каталога. - Найдите все файлы и каталоги, имена которых оканчиваются на
.bin. Поиск необходимо выполнить в каталоге/home. - Найдите все файлы (и только файлы) с расширением
bakи удалите их. - Найдите все файлы (и только файлы) с расширениями
txtиsh. - Найдите все файлы (и только файлы) в текущем каталоге и выведите только имя файла (без каталога), владельца, группу владельца, количество жёстких ссылок на этот файл и его размер в байтах.
- Найдите все пустые каталоги в текущем каталоге.
- Найдите все пустые каталоги в текущем каталоге и удалите их.
- Найдите и удалите все пустые файлы (и только файлы).
- Найдите все файлы (и только файлы) в текущем каталоге, на которые есть хотя бы одна жёсткая ссылка.
- Найдите файлы и каталоги в каталоге
/etc, не принадлежащие пользователюroot. - Найдите все файлы (и только файлы), у которых нет расширения
sh. - Найдите все файлы (и только файлы), у которых количество жёстких ссылок более двух.
- Найдите все файлы (и только файлы) в каталоге
/usr/bin, последний доступ к которым осуществлялся более трёх месяцев назад. - Найдите все файлы (и только файлы) в каталогах
/usr/binи/usr/share, созданные или изменённые в течении последних 10 дней. - Найдите и удалите все файлы (и только файлы) в каталоге
/tmp, которые не менялись более двух недель. - Найдите все файлы (и только файлы) в каталоге
/usr/binс установленным флагом suid/sgid.
Используя команды find и xargs или параметр -exec команды find:
- Найдите все файлы (и только файлы) с расширением
txtи подсчитайте количество строк во всех этих файлах. - Найдите все каталоги с названием
.svnи удалите их, включая содержимое этих каталогов, попутно выводя список удалённых файлов на экран. - Найдите все файлы (и только файлы) с расширением
shи добавьте им право на исполнение. - Найдите все файлы (и только файлы) с расширением
confв каталоге/etcи подсчитайте их суммарный размер, используя командуdu.
Протестируйте команды, которые вы написали выше, для файлов и каталогов, в именах которых содержатся пробелы и специальные символы, такие как ! и &.
Используя команду grep:
- Из файла
/var/log/messagesвывести строки, содержащие ключевое словоERROR, без учёта регистра. - Из файла
/var/log/messagesвывести количество строк, не содержащих ключевое словоERROR, без учёта регистра. - Из файла
/var/log/messagesвывести строки, содержащие только словоERRORцеликом, с учётом регистра. - Вывести количество строк из файла
/etc/group, совпадающих с шаблономwheel. - Найти во всех файлах из текущего каталога и вложенных подкаталогов строки, содержащие шаблон
#!bin/bash. - Изменить предыдущую команду таким образом, чтобы она выводила дополнительные 10 строк после каждого найденного шаблона.
- Найти во всех файлах с расширением
shиз текущего каталога и вложенных подкаталогов строки, содержащие словоechoцеликом. В выводе командыgrepнайденные слова выделите цветом. - Измените предыдущую команду таким образом, чтобы команда grep отображала также имя файла и номер строки, в которой было обнаружено совпадение с шаблоном.
Отчёт по лабораторной работе
Скопируйте данную лабораторную работу в виде файла Markdown на свой компьютер, и под каждым заданием напишите ответ.
git clone https://github.com/efanov/mephi.wiki.git
Получившийся файл загрузите в собственный репозиторий.