Содержание
- 1 Примеры использования find
- 2 Дополнительные возможности
- 3 Как посмотреть список дисков в Linux
- 4 Команда ls linux
- 5 Как найти все файлы только для чтения
- 6 Примеры использования команды find
- 7 Примеры использования
- 8 Синтаксис команды find
- 9 Use Grep to Find Files in Linux Using the Command Line
- 10 Примеры использования locate
- 11 Работа с файловой системой
- 12 Регулярные выражения в терминале Linux
- 13 Копирование файлов по регулярным выражениям в Linux
- 14 Search Location Shortcuts
Примеры использования find
Поиск файла по имени
1. Простой поиск по имени:
find / -name «file.txt»
* в данном примере будет выполнен поиск файла с именем file.txt по всей файловой системе, начинающейся с корня .
2. Поиск файла по части имени:
find / -name «*.tmp»
* данной командой будет выполнен поиск всех папок или файлов в корневой директории /, заканчивающихся на .tmp
3. Найти все файлы или папки, которые начинаются на sess_ и заканчиваются на cd
find . -name «sess_*» -a -name «*cd»
* -a: логическое И, -o: логическое ИЛИ.
4. Найти все файлы, кроме .log:
find . ! -name «*.log»
* в данном примере мы воспользовались логическим оператором !.
Поиск по дате
1. Поиск файлов, которые менялись определенное количество дней назад:
find . -type f -mtime +60
* данная команда найдет файлы, которые менялись более 60 дней назад.
2. Поиск файлов с помощью newer. Данная опция доступна с версии 4.3.3 (посмотреть можно командой find —version).
а) дате изменения:
find . -type f -newermt «2019-11-02 00:00»
* покажет все файлы, которые менялись, начиная с 02.11.2019 00:00.
find . -type f -newermt 2019-10-31 ! -newermt 2019-11-02
* найдет все файлы, которые менялись в промежутке между 31.10.2019 и 01.11.2019 (включительно).
б) дате обращения:
find . -type f -newerat 2019-10-08
* все файлы, к которым обращались с 08.10.2019.
find . -type f -newerat 2019-10-01 ! -newerat 2019-11-01
* все файлы, к которым обращались в октябре.
в) дате создания:
find . -type f -newerct 2019-09-07
* все файлы, созданные с 07 сентября 2019 года.
find . -type f -newerct 2019-09-07 ! -newerct «2019-09-09 07:50:00»
* файлы, созданные с 07.09.2019 00:00:00 по 09.09.2019 07:50
Искать в текущей директории и всех ее подпапках только файлы:
find . -type f
* f — искать только файлы.
Поиск по правам доступа
1. Ищем все справами на чтение и запись:
find / -perm 0666
2. Находим файлы, доступ к которым имеет только владелец:
find / -perm 0600
Поиск файла по содержимому
find / -type f -exec grep -i -H «content» {} \;
* в данном примере выполнен рекурсивный поиск всех файлов в директории и выведен список тех, в которых содержится строка content.
С сортировкой по дате модификации
find /data -type f -printf ‘%TY-%Tm-%Td %TT %p\n’ | sort -r
* команда найдет все файлы в каталоге /data, добавит к имени дату модификации и отсортирует данные по имени. В итоге получаем, что файлы будут идти в порядке их изменения.
Лимит на количество выводимых результатов
Самый распространенный пример — вывести один файл, который последний раз был модифицирован. Берем пример с сортировкой и добавляем следующее:
find /data -type f -printf ‘%TY-%Tm-%Td %TT %p\n’ | sort -r | head -n 1
Поиск с действием (exec)
1. Найти только файлы, которые начинаются на sess_ и удалить их:
find . -name «sess_*» -type f -print -exec rm {} \;
* -print использовать не обязательно, но он покажет все, что будет удаляться, поэтому данную опцию удобно использовать, когда команда выполняется вручную.
2. Переименовать найденные файлы:
find . -name «sess_*» -type f -exec mv {} new_name \;
или:
find . -name «sess_*» -type f | xargs -I ‘{}’ mv {} new_name
3. Вывести на экран количество найденных файлов и папок, которые заканчиваются на .tmp:
find . -name «*.tmp» | wc -l
4. Изменить права:
find /home/user/* -type d -exec chmod 2700 {} \;
* в данном примере мы ищем все каталоги (type d) в директории /home/user и ставим для них права 2700.
5. Передать найденные файлы конвееру (pipe):
find /etc -name ‘*.conf’ -follow -type f -exec cat {} \; | grep ‘test’
* в данном примере мы использовали find для поиска строки test в файлах, которые находятся в каталоге /etc, и название которых заканчивается на .conf. Для этого мы передали список найденных файлов команде grep, которая уже и выполнила поиск по содержимому данных файлов.
Дополнительные возможности
Важной альтернативой параметру является параметр ; его поведение такое же, как у , но перед выполнением какой-либо команды над найденным файлом он выводит предупреждение пользователю. Предположим, что необходимо файл за файлом (file-by-file) удалить большую часть .txt-файлов в домашнем каталоге
При автоматизированном поиске операции удаления, такие как команда в UNIX, опасны, поскольку возможно непреднамеренное удаление важных файлов; возможно, следует изучить все найденные файлы перед тем как удалять их.
Следующая команда выводит список всех .txt-файлов в домашнем каталоге. Чтобы удалить эти файлы, необходимо, когда команда выведет имя файла, ввести или :
$ find $HOME/. -name *.txt -ok rm {} \;
Каждый найденный файл выводится подобным образом, а система делает паузу для ввода или . Система не удалит файл, если нажать клавишу Enter. содержит пример результатов работы команды .
Листинг 1. Пример результатов
< rm ... /home/bill/./.kde/share/apps/karm/karmdata.txt > ? < rm ... /home/bill/./archives/LDDS.txt > ? < rm ... /home/bill/./www/txt/textfile1.txt > ? < rm ... /home/bill/./www/txt/faq.txt > ? < rm ... /home/bill/./www/programs/MIKE.txt > ? < rm ... /home/bill/./www/programs/EESTRING.txt > ? . . .
После каждого вопросительного знака система останавливается; в этом случае для перехода к следующему файлу была нажата клавиша Enter (никакие файлы не были удалены). Параметр позволяет управлять автоматической обработкой каждого файла, делая более безопасным процесс автоматического удаления файлов.
Бывает так, что при использовании параметра требуется подтверждать или отклонять удаление слишком большого количества файлов по отдельности. В таком случае для вывода имен всех файлов, которые надо удалить, следует выполнить команду с параметром . Затем, изучив список и убедившись, что важные файлы не будут удалены, выполните команду еще раз, заменив на .
И и – полезные параметры, однако прежде чем их использовать, нужно решить, какой из них наиболее подходит для конкретной ситуации. Помните, что безопасность превыше всего!
Как посмотреть список дисков в Linux
В Linux все отображается в файловом виде, в том числе и устройства. Все подключённые к операционной системе Linux устройства размещаются в каталоге /dev/ здесь вы найдете микрофоны, камеры, жёсткие диски, флешки, одним словом, все внешние и внутренние устройства.
Жёсткие диски имеют особенные названия. В зависимости от интерфейса, через который подключён жёсткий диск, название может начинаться на:
- sd — устройство, подключённое по SCSI;
- hd — устройство ATA;
- vd — виртуальное устройство;
- mmcblk — обозначаются флешки, подключённые через картридер;
В наше время большинство блочных устройств Linux подключаются через интерфейс SCSI. Сюда входят жёсткие диски, USB-флешки, даже ATA-диски теперь тоже подключаются к SCSI через специальный переходник. Поэтому в большинстве случаев вы будете иметь дело именно с дисками sd.
Третья буква в имени диска означает его порядковый номер в системе. Используется алфавитная система. Например sda — первый диск, sdb — второй диск, sdc — третий и так далее. Дальше следует цифра — это номер раздела на диске — sda1, sda2.
Самый простой способ увидеть все подключённые диски — это посмотреть содержимое каталога /dev/ и отфильтровать устройства sd:
Как видите, в моей системе сейчас есть только один диск и два раздела. Дальше мы можем посмотреть, куда примонтирован каждый из разделов:
Здесь отображается уже подробная информация. Но вы можете узнать ещё больше с помощью команды lsblk:
В этом случае список примонтированных дисков Linux включает ещё и информацию о точке монтирования, типе раздела (диск, раздел, привод) и его мажорном и минорном номере, по которым можно понять, что это за устройство. Если вам нужна информация о размере, то лучше использовать fdisk:
Это все утилиты, которыми вы можете воспользоваться, чтобы просмотреть список дисков Linux. Но есть ещё и графические утилиты.
Команда ls linux
Как обычно, в таких статьях сначала нам нужно понять синтаксис команды, чтобы вы знали как правильно ее использовать. На самом деле, синтаксис очень прост, вы набираете саму команду, а после нее путь к папке, содержимое которой хотите посмотреть. Если вы запустите команду без пути, то она выдаст содержимое текущего каталога:
$ ls опции /путь/к/папке
Опции команды указывают как именно и в каком виде нужно выводить информацию на экран, а путь, это та папка, которую нужно отобразить. Рассмотрим основные опции утилиты:
- -a — отображать все файлы, включая скрытые, это те, перед именем которых стоит точка;
- -A — не отображать ссылку на текущую папку и корневую папку . и ..;
- —author — выводить создателя файла в режиме подробного списка;
- -b — выводить Escape последовательности вместо непечатаемых символов;
- —block-size — выводить размер каталога или файла в определенной единице измерения, например, мегабайтах, гигабайтах или килобайтах;
- -B — не выводить резервные копии, их имена начинаются с ~;
- -c — сортировать файлы по времени модификации или создания, сначала будут выведены новые файлы;
- -C — выводить колонками;
- —color — включить цветной режим вывода, автоматически активирована во многих дистрибутивах;
- -d — выводить только директории, без их содержимого, полезно при рекурсивном выводе;
- -D — использовать режим вывода, совместимый с Emacs;
- -f — не сортировать;
- -F — показывать тип объекта, к каждому объекту будет добавлен один из специализированных символов */=>@|;
- —full-time — показывать подробную информацию, плюс вся информация о времени в формате ISO;
- -g — показывать подробную информацию, но кроме владельца файла;
- —group-directories-first — сначала отображать директории, а уже потом файлы;
- -G — не выводить имена групп;
- -h — выводить размеры папок в удобном для чтения формате;
- -H — открывать символические ссылки при рекурсивном использовании;
- —hide — не отображать файлы, которые начинаются с указанного символа;
- -i — отображать номер индекса inode, в которой хранится этот файл;
- -l — выводить подробный список, в котором будет отображаться владелец, группа, дата создания, размер и другие параметры;
- -L — для символических ссылок отображать информацию о файле, на который они ссылаются;
- -m — разделять элементы списка запятой;
- -n — выводить UID и GID вместо имени и группы пользователя;
- -N — выводить имена как есть, не обрабатывать контролирующие последовательности;
- -Q — брать имена папок и файлов в кавычки;
- -r — обратный порядок сортировки;
- -R — рекурсивно отображать содержимое поддиректорий;
- -s — выводить размер файла в блоках;
- -S — сортировать по размеру, сначала большие;
- -t — сортировать по времени последней модификации;
- -u — сортировать по времени последнего доступа;
- -U — не сортировать;
- -X — сортировать по алфавиту;
- -Z — отображать информацию о расширениях SELinux;
- -1 — отображать один файл на одну строку.
Это были все основные параметры команды ls, которые нам может когда-либо понадобиться использовать. Их очень много, но на деле будут нужны только некоторые из них, вы их быстро запомните, а все остальные сможете всегда найти в этой статье или на странице справки man ls. А теперь давайте рассмотрим несколько примеров использования команды ls linux.
Как найти все файлы только для чтения
Как уже было сказано, команда find более многофункциональна, чем locate. Она может выполнять поиск по операционной системе и жесткий дискам, руководствуюсь в качестве параметров и фильтров разрешениями, выданными конкретному пользователю (его учетной записи). Для этого используются специальные маски прав в восьмеричной и других системах исчисления. К примеру, для нахождения данных с маской прав 0664, необходимо выполнить команду «$find . type f -perm 0664» без кавычек (они добавлены для удобства отображения команд).
Для поиска файлов с установленными флагами suid/guid выполняют такую строку «$find / -perm 2644». А вот поиск файлов, которые доступны только для чтения, выглядит следующим образом: «$ find /etc -maxdepth 1 -perm /u=r».
Важно! Исполняемые файлы имеют такие же разрешения и по ним удобно проводить поиск. Пользуясь масками команды find, а не поиском по расширению
Для нахождения только исполняемых файлов прописывают и выполняют «$find /bin -maxdepth 2 -perm /a=x».
Примеры использования команды find
Теперь давайте посмотрим на несколько примеров использования команды find в Linux, которые помогут вам в быстром изучении данной утилиты.
Поиск по названию (-name)
Вот простой пример. Следующая команда ищет файл в текущем каталоге:
где:
- . (точка) — означает что файл относится к текущему каталогу
- —name — указывает критерии, которые должны быть сопоставлены. В данном случае название файла
В данном примере критерий учитывает регистр и игнорирует файл . Чтобы гарантировать, что ваш поиск нечувствителен к регистру, используйте :
Чтобы найти все .jpg файлы изображений в текущем каталоге, используйте шаблон подстановки :
Вы можете использовать имя каталога для поиска. Например, чтобы найти все изображения в формате .jpg в каталоге /home:
Если вы видите слишком много ошибок, связанных с отказом в разрешениях (Permission denied), вы можете добавить опцию в конце команды. Она перенаправляет сообщения об ошибках на устройство /dev/null и дает более чистый вывод:
Поиск по типу файла
С помощью критерия вы можете искать файлы по типу. Типы файлов могут быть:
- f — простой файл
- d — директория
- l — символические ссылки
- b — блочные устройства (dev)
- c — символьные устройства (dev)
- p — именованные каналы
- s — сокеты
Например, при использовании будут перечислены только каталоги:
Поиск по размеру файла
Возможно, вам потребуется найти большие файлы и удалить их. В следующем примере за критерием размера файла следует строка . Это приведет к поиску всех файлов размером более 1 ГБ.
Знак + означает поиск файлов, размер которых превышает указанное ниже число. Знак минус (-) может использоваться для обозначения меньшего чем. Отсутствие знака означает точное совпадение размера.
Символ | Единица измерения |
с | Байт |
k | Килобайт |
M | Мегабайт |
G | Гигабайт |
Поиск по времени изменения файла
Вы можете искать все файлы и каталоги в зависимости от времени создания или изменения с помощью опции . Для поиска всех файлов, измененных за последние 60 минут (менее 60), используйте :
Для файлов, измененных в любое время до последних 60 минут, используйте .
Поиск по времени доступа
Вы можете искать файлы по времени последнего доступа с помощью опции . Например, следующая команда ищет файлы, к которым не обращались в течение последних 180 дней:
Их можно переместить на устройство резервного копирования, если на диске не хватает места.
Поиск по имени пользователя
С помощью опции вы можете искать все файлы и каталоги, принадлежащие пользователю. Например, следующая команда ищет все файлы и каталоги, принадлежащие пользователю ubuntu, в каталоге /home:
Поиск по режиму
Хотите искать файлы, настроенные для определенного режима, то есть иметь определенный набор разрешений? Используют критерий . В следующем примере выполняется поиск файлов с разрешениями 777:
Примеры использования
С теорией покончено, теперь перейдём к практике. Рассмотрим несколько основных примеров поиска внутри файлов Linux с помощью grep, которые могут вам понадобиться в повседневной жизни.
Поиск текста в файлах
В первом примере мы будем искать пользователя User в файле паролей Linux. Чтобы выполнить поиск текста grep в файле /etc/passwd введите следующую команду:
В результате вы получите что-то вроде этого, если, конечно, существует такой пользователь:
А теперь не будем учитывать регистр во время поиска. Тогда комбинации ABC, abc и Abc с точки зрения программы будут одинаковы:
Вывести несколько строк
Например, мы хотим выбрать все ошибки из лог-файла, но знаем, что в следующей строчке после ошибки может содержаться полезная информация, тогда с помощью grep отобразим несколько строк. Ошибки будем искать в Xorg.log по шаблону «EE»:
Выведет строку с вхождением и 4 строчки после неё:
Выведет целевую строку и 4 строчки до неё:
Выведет по две строки с верху и снизу от вхождения.
Регулярные выражения в grep
Регулярные выражения grep — очень мощный инструмент в разы расширяющий возможности поиска текста в файлах. Для активации этого режима используйте опцию -e. Рассмотрим несколько примеров:
Поиск вхождения в начале строки с помощью спецсимвола «^», например, выведем все сообщения за ноябрь:
Поиск в конце строки — спецсимвол «$»:
Найдём все строки, которые содержат цифры:
Вообще, регулярные выражения grep — это очень обширная тема, в этой статье я лишь показал несколько примеров. Как вы увидели, поиск текста в файлах grep становиться ещё эффективнее. Но на полное объяснение этой темы нужна целая статья, поэтому пока пропустим её и пойдем дальше.
Рекурсивное использование grep
Если вам нужно провести поиск текста в нескольких файлах, размещённых в одном каталоге или подкаталогах, например в файлах конфигурации Apache — /etc/apache2/, используйте рекурсивный поиск. Для включения рекурсивного поиска в grep есть опция -r. Следующая команда займётся поиском текста в файлах Linux во всех подкаталогах /etc/apache2 на предмет вхождения строки mydomain.com:
В выводе вы получите:
Здесь перед найденной строкой указано имя файла, в котором она была найдена. Вывод имени файла легко отключить с помощью опции -h:
Поиск слов в grep
Когда вы ищете строку abc, grep будет выводить также kbabc, abc123, aafrabc32 и тому подобные комбинации. Вы можете заставить утилиту искать по содержимому файлов в Linux только те строки, которые выключают искомые слова с помощью опции -w:
Количество вхождений строки
Утилита grep может сообщить, сколько раз определённая строка была найдена в каждом файле. Для этого используется опция -c (счетчик):
C помощью опции -n можно выводить номер строки, в которой найдено вхождение, например:
Получим:
Инвертированный поиск в grep
Команда grep Linux может быть использована для поиска строк в файле, которые не содержат указанное слово. Например, вывести только те строки, которые не содержат слово пар:
Вывод имени файла
Вы можете указать grep выводить только имя файла, в котором было найдено заданное слово с помощью опции -l. Например, следующая команда выведет все имена файлов, при поиске по содержимому которых было обнаружено вхождение primary:
Синтаксис команды find
Общий синтаксис команды find, который вы можете найти в справочном руководстве, может показаться не совсем простым, поэтому я приведу более удобный для восприятия:
Путь
В качестве пути для поиска можно использовать как абсолютные, так и относительные пути, а также список путей, разделенных пробелом.
Опции
Опции команды find указываются, начиная с символа «-», за которым следует название опции. Рассмотрим основные опции.
-depth (или -d) | Поиск в подкаталогах перед поиском в самом каталоге. |
-L | При поиске следовать по символическим ссылкам. |
-maxdepth N | При поиске проверять не более чем N вложенных уровней каталогов. |
-mindepth N | Не проверять вложенные каталоги уровня N и меньше. |
-mount | Не искать в каталогах других файловых систем. |
Критерии поиска
У команды find может быть несколько критериев поиска (их также называют tests). Каждый критерий представляет собой определенное условие проверки, которое возвращает либо true либо false. Это можно сравнить с условиями оператора if в программировании. В процессе обработки очередного файла команда find по очереди проверяет каждый критерий, и если очередной критерий возвращает false, тогда команда find переходит к следующему файлу. Критериев у команды find довольно много, мы рассмотрим только некоторые из них.
-atime N | Последний раз к файлу обращались N дней назад. |
-mtime N | Последнее изменение файла было N дней назад. |
-name шаблон | Имя файла (шаблон имени) без указания пути. Рекомендуется всегда заключать шаблон в кавычки. |
-newer другой_файл | Файл был изменен позже, чем другой_файл. |
-size N | Размер файла равен N блокам, если указано +N, тогда размер файла больше N, -N — меньше. Символ после N означает размер блока. b — 512 байт, с — байт, w — 2 байта, k — килобайт, M — мегабайт, G — гигабайт. |
-type C | Файл типа C. Наиболее часто используемые значения для С: d — каталог, f — файл. |
-user Имя_пользователя | Файл принадлежит пользователю с именем Имя_пользователя. |
Примеры использования команды find с использованием критериев
Найти в текущем каталоге обычные файлы (не каталоги), имя которых начинается с символа «~».
Найти в текущем каталоге файлы, измененные позже, чем файл file.bak.
Операторы
Критерии можно объединять, используя операторы. Ниже приведены операторы в порядке убывания их приоритета.
Короткая форма оператора | Длинная форма | Описание |
---|---|---|
! критерий | -not | Отрицание (возвращает true, если критерий false) |
критерий1-a критерий2 | -and | Оператор И (true, если критерий1 и критерий2 true) |
критерий1-o критерий2 | -or | Оператор ИЛИ (true, если критерий1 или критерий2 true) |
В общем случае при использовании операторов критерии проверяются в порядке их приоритета. Изменить порядок можно с помощью скобок. Скобки нужно выделять с помощью обратного слеша.
Примеры использования команды find с использованием операторов
Найти в текущем каталоге файлы, начинающиеся с символа «~» или c «temp» и являющиеся именно обычными файлами (-type f), а не каталогами.
Найти в текущем каталоге (не обрабатывая подкаталоги — -maxdeph 1) обычные файлы (-file f) размером больше 600 мегабайт и менее 1 гигабайта (-size) или файлы имя которых заканчивающиется на «.mpeg» (-name).
Действия над файлами
Когда выполняется команда find, вы можете выполнять различные действия над найденными файлами. Рассмотрим основные из них.
-exec команда \;
Выполнить команду
Обратите внимание, что после команды ставится обратный слеш и точка с запятой.
-execdir команда \;
То же самое что и exec, но команда вызывается из подкаталога, содержащего текущий файл.
-ok команда \;
То же самое, что и exec, но перед обработкой очередного файла будет выводится запрос на выполнение команды.
-okdir команда \;
То же что ok для execdir.
-print
Вывод имени файла на экран.
-ls
Выполнение команды ls -dils над текущим файлом.. В выполняемых командах вы можете использовать параметр {} в качестве аргумента, который заменяется путем к текущему файлу
В выполняемых командах вы можете использовать параметр {} в качестве аргумента, который заменяется путем к текущему файлу.
Примеры использования команды find с использованием действий
Найти в текущем каталоге обычные файлы размером больше 1000 байт и выполнить над ними команду ls -dils (действие ls).
Найти в текущем каталоге обычные файлы, начинающиеся с символа тильда «~», и для каждого файла выдавать запрос на его удаление (на выполнение команды rm).
Use Grep to Find Files in Linux Using the Command Line
The command is only able to filter the directory hierarchy based on a file’s name and metadata. If you need to search based on the content of the file, use a tool like
grep. Consider the following example:
This command searches every object in the current directory hierarchy () that is a file () and then runs the command for every file that satisfies the conditions. The files that match are printed on the screen (). The curly braces () are a placeholder for the find match results. The are enclosed in single quotes () to avoid handing a malformed filename. The command is terminated with a semicolon (), which should be escaped () to avoid interpretation by the shell.
The file used in the example () has text inside of it that says “test”. When you run the example command, you see a similar output:
Grep identified every file within the current working directory that contains the string “test”.
Примеры использования locate
Если нужно найти файлы, соответствующие сразу нескольким шаблонам, используется опция -A. Шаблоны разделяются пробелом:
Опция -w включена по умолчанию, поэтому locate проверяет на соответствие шаблону не только имена файлов, но и названия папок, в которых эти файлы расположены. Например, если Документ1.ods находится по адресу Компьютер/БухалтерияДоки/ВсеДокументы/, он будет выведен командой при использовании шаблонов «Док», «Бух» и «Все». Для того, чтобы в результатах отображались только файлы с именами, в которых присутствует шаблон, применяется опция -b.
Для сравнения:
На скриншоте видно, как команда обрабатывает запросы с каждой из упомянутых опций.
Команда locate чувствительна к регистру. Если, к примеру, шаблон имеет вид «GrEEn», файлы с именами green и GREEN в процессе поиска будут игнорироваться. Для того, чтобы найти все документы, независимо от наличия строчных и заглавных букв в их названиях, используется опция -i.
Порой в названиях файлов встречаются буквы с диакритическими знаками (умлаутами, акутами, тремами и прочими). Эти документы не будут найдены, если в команде используется шаблон, состоящий из обычных букв. И наоборот, если в шаблоне есть буквы с диакритическими знаками, команда проигнорирует файлы, в названиях которых отсутствуют аналогичные символы. «Стереть» разницу между буквами с диакритическими знаками и без них можно при помощи опции -t.
По умолчанию команда locate осуществляет поиск в собственной базе данных mlocate.db, однако, умеет работать и с пользовательскими БД. Для этого предусмотрена следующая опция: —database.
Можно одновременно осуществлять поиск в нескольких базах данных, при этом названия файлов этих баз нужно разделять двоеточием:
Результаты будут выведены отдельно для каждой базы данных, в той же очерёдности, с которой базы данных были перечислены в запросе.
Файлы, добавленные в систему до обновления стандартной базы данных, не обнаруживаются командой locate. Также в результатах могут появляться уже несуществующие (удалённые) документы. Для того, чтобы актуализировать выдачу, используется опция -e.
Глядя на скриншот, легко сравнить результаты поиска с опцией -е и без неё.
Кроме того, можно обновить базу данных вручную, выполнив в терминале команду:
Работа с файловой системой
pwd
Выводит полный путь к текущему каталогу.
ls
Показывает список файлов и подкаталогов.
По умолчанию все файлы, которые начинаются с точки, являются скрытыми. Чтобы их показать необходимо добавит ключ «-a».
ls -a
Если нужно вывести полную информацию, то добавим символ -l.
Итого получаем: ls -al
Результат ls -la
Расcмотрим результат выполнения ls -la:
- drwr -xr -x — это права доступа;
- цифра 1 — указывает количество жестких ссылок;
- root — имя пользователя. Кто владелец;
- root — имя группы к которой принадлежит документ;
- 68 размер.
cat
Показывает на экране содержимое документа. Например нужно посмотреть содержимое файла rc.local. Вводим команду и путь, получается так: cat /etc/rc.local.
tac
tac противоположна cat. Выводит слово в обратном порядке.
less
Используется для просмотра длинных текстов с прокруткой по одной странице. Бывает так, что документ очень большой и обычный редактор не может его отрыть например mcview. Например логи. Как правило, если не задать ограничение размера логов, то они могут быть большого размера. less без труда откроит в терминале. less /var/log/syslog
Результат выполнения команды less /var/log/syslog
cp
Копирование файлов и каталогов.
сp может:
- копировать файл в другую директорию;
- копировать несколько файлов в новый каталог;
- копировать содержимое файла в другой файл той же директории.
cd
Позволяет перейти в другую директорию: cd /etc
Перемещение на уровень выше: cd ..
Перейти в домашний каталог: cd ~
~ этот же сивол используется, если нужно обратиться к документу в домашнем каталоге. ~/read.txt
find
Поиск информации в файловой системе. В Линуксе найти нужный документ бывает непросто, так так файловая система разветвлена. Синтаксис такой: find path -name filename.
После имени, идет путь к каталогу где искать. Поиск будет искать во всех подкаталогах.
Можно указать несколько директорий. find /etc /var -name networks.
Система будет искать в директориях «etc» и «var» документ с именем networks.
mkdir
Создает новый каталог: mkdir newpapka
touch
Создает новый файл: touch test
rm
Опасная команда. Позволяет удалять файлы или каталоги.
rm /var/test
Ключи rm:
- -d. удалить каталог;
- -r. рекурсивно удалять содержимое каталогов;
- -f. Не запрашивать подверждения при удалении файлов.
chmod
Изменяет права доступа к документу. Чтение, запись, выполнение.
wc
Утилита терминала Линукс. Считает количество слов, символов, байт.
Основные ключи wc:
-l. Считает количество строк.
-w . Количество слов.
-m. Количество байт и символов.
Работа с диском
df
Показывает объем свободного места на жестком диске.
Результат выполнения df
mount.
Монтирование файловых систем. Например флешку или cdrom.
mount /dev/sdc
umont.
Размонтирования устройств.
umount /dev/sdc
Работа с пользователями
sudo
Популярная команда. Означает «SuperUser Do». Позволяет запускать сценарий с правами супер пользователя root.
sudo passwd mar
useradd / userdel / usermod
useradd — позволяет создавать пользователя: useradd mar
userdel удаляет пользователя: userdel mar
usermod — добавление пользователя в группу.
passwd
Меняет пароль пользователя. Для смены пароля нужно войти в привилегированный режим linux. Добавим слово sudo или войти «sudo bash» или так «su -«.
sudo passwd user.
Основные ключи:
- -d. Удалить пароль. passwd -d user.
- -l. Блокировка пароля.
- -u. Раблокировка пароля.
-n. Дезактивировать пароль, через n дней. То есть, если пользователь не сменит пароль через n дней он не сможет войти в систему Линукс. passwd -n 80 user
Результат выполнения passwd -n 80 user
Регулярные выражения в терминале Linux
Регулярные выражения (regex) — это язык описания шаблона строк.
Точка «» является специальным символом, который будет соответствовать любому символу (кроме новой строки). Например, будет соответствовать bat, bbt, b%t и так далее, но при этом сюда не подойдут bt, xbt.
Класс символов: один из элементов в квадратных скобках будет совпадать, при этом допускаются последовательности:
— соотносится с Cat и cat. — соотносится с fate, gate, hate.
Символ «» внутри класса символов означает отрицание, например:
будет соответствовать brat, но не boat или beat.
Расширенные выражения запускаются с помощью или , при этом:
«» соответствует нулю или более, «» соответствует одному или более, «» соответствует нулю или разовому появлению предыдущего символа, например:
будет соответствовать hat, cat, hhat, chat, cchhat и т. д.
«» является разделителем для нескольких шаблонов, а «» и «» позволяют группировать шаблоны, например:
будет соответствовать cat, Cat, dog и Dog.
«» может использоваться для указания диапазона повторения, например:
будет соответствовать baat, baaat и baaaat, но не bat.
Примеры grep
Строки, которые заканчиваются двумя гласными:
Проверка 5 строк до и после строки, где встречается «little»:
Комментируйте команды и выполняйте поиск последних использованных в истории:
Удостоверьтесь, что вы правильно написали все команды в терминале Linux и избежали возможных двусмысленностей:
— ещё одна очень полезная комбинация вам на заметку.
Копирование файлов по регулярным выражениям в Linux
В утилите find можно применять различные условия и регулярные выражения для поиска файлов. Я уже немного писал о ней в статье как найти новые файлы в Linux. Мы можем скопировать все найденные с помощью find файлы, вызвав для каждого из них команду cp. Например, копируем все файлы в текущей директории, содержащие в имени только цифры:
Здесь точка указывает на текущую директорию, а параметр name задает регулярное выражение. Параметром exec мы задаем, какую команду нужно выполнить для обнаруженных файлов. Символ {} — подставляет имя каждого файла.
Но не find’ом единым такое делается. То же самое можно получить, запросив список файлов директории в ls, отфильтровав его по регулярному выражению egrep и передав имена файлов по очереди в cp с помощью xargs:
Это не совсем удобный способ копировать файлы Linux, но всё же он возможен. Будут скопированы все файлы из домашней директории, содержащие в имени только английские буквы.
Search Location Shortcuts
The first argument after the find command is the location you wish to search. Although you may specify a specific directory, you can use a metacharacter to serve as a substitute. The three metacharacters that work with this command include:
- Period (.): Specifies the current and all nested folders.
- Forward Slash (/): Specifies the entire filesystem.
- Tilde (~): Specifies the active user’s home directory.
Searching the entire filesystem may generate access-denied errors. Run the command with elevated privileges (by using the sudo command) if you need to search in places your standard account normally cannot access.