GNU/Linux всё что нужно знать про bash. Часть 6

Май 20, 2018

В статье мы рассмотрим одни из самых мудрёных команд, да поможет нам бог (если он конечно существует) разобраться в том что намудрили создатели grep и find. Да и по этим командам будет море вопросов в LPIC-1.

Цикл статей:
wc sort uniq cut tee tr split sed rename export alias
man pwd ls du cd touch mkdir ln rm rmdir history
cp scp mv dd diff diff3 md5sum
echo cat tac head tail more less ed nano vim
tar gzip gunzip bzip2 bunzip2 zip unzip
grep find locate which whereis file

grep find locate which whereis file

grep — ищет текст по шаблону, особенно полезна качестве фильтра в конвеерах.
grep образец файл — для поиска строк, содержащих заданный пользователем образец

-C — показывать соседние строчки сверху и снизу, переданный аргумент будет количеством строчек (-С 2)
-r — (recursive) рекурсивно обследовать все дерево указанной директории, папки и подпапки
-i — игнорировать регистр, производить поиск как среди заглавных, так и среди строчных букв (-y аналогично)
-c — (count) не выводить строки, а подсчитывать количество строк с образцом
-n — (number) указывать номера строк с образцом
-v — выводить строки, в которых образец не встречается
-w — искать строго точное соотвецтвие, не каких частей слова
-x — искать ещё более строго, только полное соотвецтвие с образцом
-l — список файлов с образцом
-L — список файлов где образца нет
-f — указать файл с образцами для поиска
-H — Выдает имя файла для каждого совпадения
-h — Подавляет вывод имен файлов
-m — Прекратить обработку после того, как количество совпадений станет равным переданному аргументу
-L — сообщает имена файлов, где не встретился образец
-A — показывать соседние строчки снизу, переданный аргумент будет количеством строчек
-B — показывать соседние строчки сверху, переданный аргумент будет количеством строчек
grep ‘Вася’ file.txt file2.txt — поиск Васи в нескольких файлах
grep ‘Вася’ home/ — поиск Васи во всех файлах директории home/
ls | grep file2 — поиск по названию файла, с помощью ls и конвеера, аналогично можно сделать по дате
grep ‘\<test’ file — искать слова, оканчивающиеся на -test
grep ‘test\>’ file — искать слова, которые начинаются на test-
grep ‘Вася’ example/* | grep ‘Петя’ — искать строки, содержащие несколько образцов

find [папка] [параметры] [критерий] шаблон [действие] — Поиск в файловой системе, файлах и папках. Может выполнять произвольные команды для найденных файлов
[параметры] -version — показать версию утилиты find
-maxdepth — максимальная глубина поиска по подкаталогам, по умолчанию 1
-depth — искать сначала в текущем каталоге
-newer — искать файлы новее указанного
-not — искать файлы, которые не соответствуют шаблону
-o — искать файлы, которые соотвецтвуют или одному или второму шаблону
-mount искать файлы только в этой файловой системе
-print — выводить полные имена файлов
-type f — искать по типу: f — file, d — directory, l — link, p — pipe, s — socket

[критерии] -name — поиск файлов по имени
-iname — поиск файлов по имени не учитывая регистр
-size — поиск файлов в Linux по их размеру
-perm — поиск файлов в Linux по режиму доступа
-user — поиск файлов по владельцу
-nouser — поиск файлов без владельцев
-group — поиск по группе
-nogroup — поиск файлов, не принадлежащих ни одной группе
-mtime — поиск по времени модификации файла в днях
-cmin — поиск по времени модификации файла в минутах
-newer — найти файлы новее чем указанный
-atime — поиск файлов по дате последнего чтения

find . -name «*.iso» — Искать файлы по имени в текущей папке, в данном случае оканчивающиеся на .iso
find privet/ — Показать все файлы в директории privet
find . -name «test» -not -name «*.doc» — Поиск по нескольким критериям, с оператором исключения
find -name «*.html» -o -name «*.php» — Поиск по нескольким критериям, с оператором ИЛИ
find ./test ./test2 -type f -name «.*» — Поиск по нескольким каталогам скрытых файлов
find . type f -perm 0775 — Найти файлы с определенной маской прав
find /etc -maxdepth 1 -perm /u=r — Поиск файлов только для чтения
find . -user vasia — Найти файлы принадлежащие пользователю vasia
find /home -mtime 5 — Поиск по дате модификации 5 дней
find / -mtime +50 –mtime -100 — Найти файлы модифицированные между 50 и 100 дней назад
find / -size 10M — Найти все файлы размером 10 мегабайт (+10M всё что больше, -10M всё что меньше)
find ~/ -type d -empty — поиск пустых директорий (для файлов f вместо d)

-exec — Для выполнения произвольных команд для найденных файлов
find . -exec ls -ld {} \; — выполнить ls для получения подробной информации о каждом файле
find /home -type f -name «*.doc» -exec rm -f {} \; — Удалить все doc файлы в home (-ok rm для подтвер)
-exec cp {} /backup/ \; — копируем в директорию /backup/

locate использует собственную базу данных для хранения имен файлов (обновление раз в сутки) поэтому ищет очень быстро.
sudo updatedb — Обновление базы вручную, индексирование файловой системы.
locate php.ini — вывести список путей, по которым вы обнаружите файлы с названием php.ini
-q — Скрытие сообщений об ошибках (locate .php -q)
-n — Ограничение вывода количеством результатов
-c — Подсчет количества результатов поиска
-i — Поиск файлов без учета регистра
locate —statistics — Информация о базе данных, статистика, относящаяся к базе данных mlocate.db

which название_программы — будет ли доступна команда в моём окружении, если да — покажет адрес
which ls — смотреть расположение ls
which firefox — смотреть расположение firefox

whereis — покажет положение бинарного файла, исходников и man-страницы
-b — место расположения кода, бинарники
-s — исходные файлы для указанной команды
-m — файлы документации manuals

file имя_файла — поможет определить тип файла если расширение не правильно или и вовсе отсутствует

Теги статьи:
· ·
Категории статьи
Linux · New

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *