Лабораторная работа. Поиск файлов - 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
Получившийся файл загрузите в собственный репозиторий.