Поиск текста внутри файлов директории
grep -rni "Xdebug" .
r - рекурсивный поиск
n - выводить номер найденной строки в файле
i - регистронезависимый поиск
Поиск файлов
find / -name file1 найти файлы и директории с именем file1. Поиск начать с корня (/)
find / -user user1 найти файл и директорию принадлежащие пользователю user1. Поиск начать с корня (/)
find /home/user1 -name "*.bin" Найти все файлы и директории, имена которых оканчиваются на '. bin'. Поиск начать с '/home/user1'
find /usr/bin -type f -atime +100 найти все файлы в '/usr/bin', время последнего обращения к которым более 100 дней
find /usr/bin -type f -mtime -10 найти все файлы в '/usr/bin', созданные или изменённые в течении последних 10 дней
find / -name *.rpm -exec chmod 755 '{}' \; найти все фалы и директории, имена которых оканчиваются на '.rpm', и изменить права доступа к ним
find / -xdev -name "*.rpm" найти все фалы и директории, имена которых оканчиваются на '.rpm', игнорируя съёмные носители, такие как cdrom, floppy и
find /var -size +100000k - найти все файлы в директории /var размером больше 100мегабайт.
find /var -size +100M - найти все файлы в директории /var размером больше 100мегабайт.
find /var/www/site/data/mod-tmp/ -type f -name "sess*" -mmin +60 - найти все файлы в директории с именем, начинающимся на "sess" и старше 60 мин
find /var/www/site/data/mod-tmp/ -type f -name "sess*" -mmin +60 -delete - - найти все файлы в директории с именем, начинающимся на "sess" и старше 60 мин и удалить
т.п.
locate "*.ps" найти все файлы, содержащие в имени '.ps'. Предварительно рекомендуется выполнить команду 'updatedb'
whereis halt показывает размещение бинарных файлов, исходных кодов и руководств, относящихся к файлу 'halt'
which halt отображает полный путь к файлу 'halt'
(С) https://ru.wikipedia.org/wiki/Find - подборка типовых примеров
Поиск файлов с использованием регулярных выражений
find имеет опцию regextype
Варианты значений опции:
`findutils-default', `awk', `egrep', `ed', `emacs', `gnu-awk', `grep', `posix-awk', `posix-basic', `posix-egrep', `posix-extended', `posix-minimal-basic', `sed'.
На pcre похожи 4 режима:
ed, sed, grep, posix-basic
Описание синтаксиса регулярных выражений для sed:
https://www.gnu.org/software/sed/manual/html_node/Regular-Expressions.html#Regular-Expressions
При составлении регулярного выражения нужно учитывать тот факт, что find выдает полный путь либо от текущего каталога, либо от заданной папки
Таким образом поисковая выдача может начинаться либо с /, либо с ./
Регулярные выражения позволяют более гибко выполнить поиск файла.
find . -type f -regextype sed -regex "./[^-3]*\(HTML\)\+[^-3]*/[^0-9/]*3[0-9]\{3,4\}[^0-9/]*.\(png\|jpg\)"
. - искать от текущего каталога
-type f - ищем файлы
-regextype sed - тип регулряного выражения
-regex - опция, после которой в двойных кавычках идет само регулярное выражение
./ [^-3]* \(HTML\)\+ [^-3]* / [^0-9/]* 3 [0-9]\{2,4\} [^0-9/]* . \(png\|jpg\)
Красным выделены простые текстовые элементы шаблона
./ - строка начинается с этих символов
[^-3]* - все символы, кроме дефиса и цифры 3 (класс), ^ - отрицание перечисленных символов
\(HTML\)\+ строка HTML должна обязательно присутствовать хотя бы один раз (+), 3 слеша являются экранирующими символами
[^-3]* - все символы, кроме дефиса и цифры 3 (класс)
/ - косая черта, тривиальный текстовый символ
[^0-9/]* - класс символов, в который не входят цифры и косая черта, количество повторов символов- от 0 до бесконечности (*)
3 - тривиальный текстовый символ
[0-9]\{2,4\} - класс символов, состоящий из цифр от 0 до 9, \{2,4\} - число повторений указанных цифр - от 2 до 4, 2 слеша - экранирующие
[^0-9/]* - класс символов, в который не входят цифры и косая черта, количество повторов символов- от 0 до бесконечности (*)
. - тривиальный текстовый символ "точка".
\(png\|jpg\) - класс строк (png или jpg), все 3 слеша - экранирующие.
Итак, мы здесь ищем файл в имени которого есть число, начинающееся на 3, после тройки может идти от 2 до 4 цифр, имя файла оканчивается на png или jpg, в пути к файлу должно обязательно встречаться хотя бы один раз слово html и не должны встречаться тире - и цифра 3.
Примечание
Если мы разместим эту команду в скрипт bash, то все ок, а perl и python - ругаются на синтаксисис регулярного выражения.