Команда find linux
Содержание:
- Примеры использования find
- Узнать расположение файла
- Options and Optimization for find
- Общий синтаксис
- Найти файлы по размеру
- ПРИМЕРЫ ИСПОЛЬЗОВАНИЯ
- Метод 3: Использование команды Grep
- Найти файлы по дате изменения
- Найти файлы по разрешениям
- Поиск по размеру файла
- Команды Linux, для работы с файлами
- Как найти файлы в Linux
- find — синтаксис и зачем оно нужно
- Как найти все файлы только для чтения
- Найти и удалить файлы
- find + sed
- Команда find
- Команды Linux, Связанные С Передачей Файлов
Примеры использования find
Поиск файла по имени
1. Простой поиск по имени:
find / -name «file.txt»
* в данном примере будет выполнен поиск файла с именем file.txt по всей файловой системе, начинающейся с корня .
2. Поиск файла по части имени:
find / -name «*.tmp»
* данной командой будет выполнен поиск всех папок или файлов в корневой директории /, заканчивающихся на .tmp
3. Несколько условий.
а) Логическое И. Например, файлы, которые начинаются на sess_ и заканчиваются на cd:
find . -name «sess_*» -a -name «*cd»
б) Логическое ИЛИ. Например, файлы, которые начинаются на sess_ или заканчиваются на cd:
find . -name «sess_*» -o -name «*cd»
в) Более компактный вид имеют регулярные выражения, например:
find . -regex ‘.*/\(sess_.*cd\)’
find . -regex ‘.*/\(sess_.*\|.*cd\)’
* где в первом поиске применяется выражение, аналогичное примеру а), а во втором — б).
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, которая уже и выполнила поиск по содержимому данных файлов.
6. Произвести замену в файлах с помощью команды sed:
find /opt/project -type f -exec sed -i -e «s/test/production/g» {} \;
* находим все файлы в каталоге /opt/project и меняем их содержимое с test на production.
Узнать расположение файла
Узнать где находится файл lsb_release можно командой which lsb_release. Чтобы сразу получить
дополнительную информацию выполните
ls -lF $(which lsb_release)
-rwxr-xr-x. 1 root root 15929 Mar 27 2015 /usr/bin/lsb_release*
Опция -F означает показать тип файлов. Поэтому нам удалось увидеть * после lsb_release. * означает, что файл
исполняемый.
Чтобы узнать откуда взялся файл можно воспользоваться командой rpm с опциями
q (query) и f (file)
rpm -qf $(which lsb_release)
redhat-lsb-core-4.1-27.el7.centos.1.x86_64
Чтобы скопировать файл в интерактивном режиме воспользуйтесь командой cp с опцией i (interactive)
interactive означает, что если файл с таким имененм существует, вас спросят прежде чем затирать его
cp -i /etc/hosts .
cp -i /etc/hosts .
cp: overwrite ‘./hosts’?
Чтобы создать директорию сразу же с поддиректорией внутри воспользуйтесь командлой
mkdir с опцией p (parent)
mkdir -p sites/heiheiru
ls -l sites
total 0
drwxrwxr-x. 2 andrei andrei 6 Nov 19 13:40 heiheiru
Options and Optimization for find
The default configuration for will ignore symbolic links (shortcut files). If you want to follow and return symbolic links, you can add the option to the command, as shown in the example above.
optimizes its filtering strategy to increase performance. Three user-selectable optimization levels are specified as , , and . The optimization is the default and forces to filter based on filename before running all other tests.
Optimization at the level prioritizes file name filters, as in , and then runs all file-type filtering before proceeding with other more resource-intensive conditions. Level optimization allows to perform the most severe optimization and reorders all tests based on their relative expense and the likelihood of their success.
Command | Description |
---|---|
(Default) filter based on file name first. | |
File name first, then file type. | |
Allow to automatically re-order the search based on efficient use of resources and likelihood of success. | |
Search current directory as well as all sub-directories X levels deep. | |
Search without regard for text case. | |
Return only results that do not match the test case. | |
Search for files. | |
Search for directories. |
Общий синтаксис
find <где искать> <опции>
<где искать> — путь к корневому каталогу, откуда начинать поиск. Например, find /home/user — искать в соответствующем каталоге. Для текущего каталога нужно использовать точку «.».
<опции> — набор правил, по которым выполнять поиск.
* по умолчанию, поиск рекурсивный. Для поиска в конкретном каталоге можно использовать опцию maxdepth.
Описание опций
Опция | Описание |
---|---|
-name | Поиск по имени. |
-iname | Регистронезависимый поиск по имени. |
-type |
Тип объекта поиска. Возможные варианты:
|
-size | Размер объекта. Задается в блоках по 512 байт или просто в байтах (с символом «c»). |
-mtime | Время изменения файла. Указывается в днях. |
-mmin | Время изменения в минутах. |
-atime | Время последнего обращения к объекту в днях. |
-amin | Время последнего обращения в минутах. |
-ctime | Последнее изменение владельца или прав на объект в днях. |
-cmin | Последнее изменение владельца или прав в минутах. |
-user | Поиск по владельцу. |
-group | По группе. |
-perm | С определенными правами доступа. |
-depth | Поиск должен начаться не с корня, а с самого глубоко вложенного каталога. |
-maxdepth | Максимальная глубина поиска по каталогам. -maxdepth 0 — поиск только в текущем каталоге. По умолчанию, поиск рекурсивный. |
-prune | Исключение перечисленных каталогов. |
-mount | Не переходить в другие файловые системы. |
-regex | По имени с регулярным выражением. |
-regextype <тип> | Тип регулярного выражения. |
-L или -follow | Показывает содержимое символьных ссылок (симлинк). |
-empty | Искать пустые каталоги. |
-delete | Удалить найденное. |
-ls | Вывод как ls -dgils |
Показать найденное. | |
-print0 | Путь к найденным объектам. |
-exec <команда> {} \; | Выполнить команду над найденным. |
-ok | Выдать запрос перед выполнением -exec. |
Также доступны логические операторы:
Оператор | Описание |
---|---|
-a | Логическое И. Объединяем несколько критериев поиска. |
-o | Логическое ИЛИ. Позволяем команде find выполнить поиск на основе одного из критериев поиска. |
-not или ! | Логическое НЕ. Инвертирует критерий поиска. |
Полный набор актуальных опций можно получить командой man find.
Найти файлы по размеру
Чтобы найти файлы по размеру файла, передайте параметр вместе с критериями размера. Вы можете использовать следующие суффиксы, чтобы указать размер файла:
- : блоки по 512 байт (по умолчанию)
- : байты
- : двухбайтовые слова
- : килобайты
- : мегабайты
- : гигабайты
Следующая команда найдет все файлы размером ровно байта внутри каталога :
Команда также позволяет вам искать файлы, которые больше или меньше указанного размера.
В следующем примере мы ищем все файлы менее 1 внутри текущего рабочего каталога
Обратите внимание на минус символ перед значением размера:. Если вы хотите искать файлы размером более 1 , вам нужно использовать символ плюс :
Если вы хотите искать файлы размером более 1 , вам нужно использовать символ плюс :
Вы даже можете искать файлы в пределах диапазона размеров. Следующая команда найдет все файлы от до :
ПРИМЕРЫ ИСПОЛЬЗОВАНИЯ
А теперь давайте рассмотрим примеры find, чтобы вы лучше поняли, как использовать эту утилиту.
2. ПОИСК ФАЙЛОВ В ОПРЕДЕЛЕННОЙ ПАПКЕ
Показать все файлы в указанной директории:
Искать файлы по имени в текущей папке:
Не учитывать регистр при поиске по имени:
5. НЕСКОЛЬКО КРИТЕРИЕВ
Поиск командой find в Linux по нескольким критериям, с оператором исключения:
Найдет все файлы, начинающиеся на test, но без расширения php. А теперь рассмотрим оператор ИЛИ:
8. ПОИСК ПО РАЗРЕШЕНИЯМ
Найти файлы с определенной маской прав, например, 0664:
Найти файлы с установленным флагом suid/guid:
Или так:
Поиск файлов только для чтения:
Найти только исполняемые файлы:
Найти все файлы, принадлежащие пользователю:
Поиск файлов в Linux принадлежащих группе:
10. ПОИСК ПО ДАТЕ МОДИФИКАЦИИ
Поиск файлов по дате в Linux осуществляется с помощью параметра mtime. Найти все файлы модифицированные 50 дней назад:
Поиск файлов в Linux открытых N дней назад:
Найти все файлы, модифицированные между 50 и 100 дней назад:
Найти файлы измененные в течении часа:
Найти все файлы размером 50 мегабайт:
От пятидесяти до ста мегабайт:
Найти самые маленькие файлы:
Самые большие:
13. ДЕЙСТВИЯ С НАЙДЕННЫМИ ФАЙЛАМИ
Для выполнения произвольных команд для найденных файлов используется опция -exec. Например, выполнить ls для получения подробной информации о каждом файле:
Удалить все текстовые файлы в tmp
Удалить все файлы больше 100 мегабайт:
Метод 3: Использование команды Grep
Хотя Grep не предназначен для прямого поиска файлов в вашей системе, он используется для поиска текста. Однако вы можете использовать его для отображения имен файлов, которые содержат определенную строку символов, соответствующую вашему поисковому запросу. Чтобы найти строку, вы должны заключить ее в двойные кавычки.
Общий синтаксис команды:
$ grep [/ path / to / file] где содержит общие параметры для управления поиском, а содержит строку, которую мы хотим искать.
Если вы ищете файл, содержащий слово, которое, как вы подозреваете, может быть в любом конкретном каталоге вы можете найти его, используя приведенный выше синтаксис команды в Терминале.
Например, чтобы найти файл, содержащий слово «tintin», и мы думаем, что этот файл может быть в наших Загрузках folder, мы можем использовать следующую команду для поиска этого файла.
$ grep -r –i “tintin” /home/tin/Downloads
Где
— i используется для игнорирования различий в регистре
— r используется для поиска для указанного каталога рекурсивно
Поиск нескольких слов
Вы также можете искать несколько строк одновременно. Вы должны использовать обратную косую черту «\» и символы канала «|» среди ваших строк.
Например, для поиска двух строк «tintin» и «ping», мы можем использовать следующую команду в терминале:
$ grep –r –I “tintin\|ping” /home/tin/Downloads
Итак, это был краткий обзор того, как вы можете искать файлы с помощью командной строки в Ubuntu. В этой статье мы увидели три полезных метода командной строки для поиска файлов. Вы можете выбрать любой из этих методов в зависимости от скорости поиска и условий.
Найти файлы по дате изменения
Команда также может искать файлы на основе их последнего изменения, доступа или времени изменения.
То же, что и при поиске по размеру, используйте символы плюс и минус для «больше чем» или «меньше чем».
Допустим, несколько дней назад вы изменили один из файлов конфигурации dovecot, но забыли, какой именно. Вы можете легко отфильтровать все файлы в который заканчивается на и был изменен за последние пять дней:
Вот еще один пример фильтрации файлов по дате модификации с использованием опции . Приведенная ниже команда перечислит все файлы в каталоге которые были изменены или более дней назад:
Найти файлы по разрешениям
Параметр позволяет вам искать файлы на основе прав доступа к файлам.
Например, чтобы найти все файлы с разрешениями ровно внутри каталога , вы должны использовать:
Вы можете поставить перед числовым режимом знак минус или косую черту .
Когда в качестве префикса используется косая черта , то по крайней мере одна категория (пользователь, группа или другие) должна иметь по крайней мере соответствующие биты, установленные для соответствия файлу.
Рассмотрим следующий пример команды:
Приведенная выше команда будет соответствовать всем файлам с разрешениями на чтение, установленными для пользователя, группы или других.
Если в качестве префикса используется минус , то для соответствия файла необходимо установить хотя бы указанные биты. Следующая команда будет искать файлы, которые имеют права на чтение и запись для владельца и группы и доступны для чтения другим пользователям:
Поиск по размеру файла
df -h /boot
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 1014M 194M 821M 20% /boot
Найти обычные файлы определённого размера
Чтобы найти обычные файлы нужно использовать
-type f
find /boot -size +20000k -type f
find: ‘/boot/efi/EFI/centos’: Permission denied
find: ‘/boot/grub2’: Permission denied
/boot/initramfs-0-rescue-389ee10be1b38d4281b9720fabd80a37.img
/boot/initramfs-3.10.0-1160.el7.x86_64.img
/boot/initramfs-3.10.0-1160.2.2.el7.x86_64.img
Файлы бывают следующих типов:
— : regular file
d : directory
c : character device file
b : block device file
s : local socket file
p : named pipe
l : symbolic link
Подробности в статье —
«Файлы в Linux»
find /boot -size +10000k -type f
find: ‘/boot/efi/EFI/centos’: Permission denied
find: ‘/boot/grub2’: Permission denied
/boot/initramfs-0-rescue-389ee10be1b38d4281b9720fabd80a37.img
/boot/initramfs-3.10.0-1160.el7.x86_64.img
/boot/initramfs-3.10.0-1160.el7.x86_64kdump.img
/boot/initramfs-3.10.0-1160.2.2.el7.x86_64.img
/boot/initramfs-3.10.0-1160.2.2.el7.x86_64kdump.img
То же самое плюс показать размер файлов
find /boot -size +10000k -type f -exec du -h {} \;
find: ‘/boot/efi/EFI/centos’: Permission denied
find: ‘/boot/grub2’: Permission denied
60M /boot/initramfs-0-rescue-389ee10be1b38d4281b9720fabd80a37.img
21M /boot/initramfs-3.10.0-1160.el7.x86_64.img
13M /boot/initramfs-3.10.0-1160.el7.x86_64kdump.img
21M /boot/initramfs-3.10.0-1160.2.2.el7.x86_64.img
14M /boot/initramfs-3.10.0-1160.2.2.el7.x86_64kdump.img
Команды Linux, для работы с файлами
Эти команды используются для обработки файлов и каталогов.
33. ls
Очень простая, но мощная команда, используемая для отображения файлов и каталогов. По умолчанию команда ls отобразит содержимое текущего каталога.
34. pwd
Linux pwd — это команда для показывает имя текущего рабочего каталога. Когда мы теряемся в каталогах, мы всегда можем показать, где мы находимся.
Пример ример ниже:
35. mkdir
В Linux мы можем использовать команду mkdir для создания каталога.
По умолчанию, запустив mkdir без какой-либо опции, он создаст каталог в текущем каталоге.
36. cat
Мы используем команду cat в основном для просмотра содержимого, объединения и перенаправления выходных файлов. Самый простой способ использовать cat— это просто ввести » имя_файла cat’.
В следующих примерах команды cat отобразится имя дистрибутива Linux и версия, которая в настоящее время установлена на сервере.
37. rm
Когда файл больше не нужен, мы можем удалить его, чтобы сэкономить место. В системе Linux мы можем использовать для этого команду rm.
38. cp
Команда Cp используется в Linux для создания копий файлов и каталогов.
Следующая команда скопирует файл ‘myfile.txt» из текущего каталога в «/home/linkedin/office«.
39. mv
Когда вы хотите переместить файлы из одного места в другое и не хотите их дублировать, требуется использовать команду mv.
40.cd
Команда Cd используется для изменения текущего рабочего каталога пользователя в Linux и других Unix-подобных операционных системах.
41. Ln
Символическая ссылка или программная ссылка — это особый тип файла, который содержит ссылку, указывающую на другой файл или каталог. Команда ln используется для создания символических ссылок.
Команда Ln использует следующий синтаксис:
42. touch
Команда Touch используется в Linux для изменения времени доступа к файлам и их модификации. Мы можем использовать команду touch для создания пустого файла.
44. head
Команда head используется для печати первых нескольких строк текстового файла. По умолчанию команда head выводит первые 10 строк каждого файла.
45. tail
Как вы, возможно, знаете, команда cat используется для отображения всего содержимого файла с помощью стандартного ввода. Но в некоторых случаях нам приходится отображать часть файла. По умолчанию команда tail отображает последние десять строк.
46. gpg
GPG — это инструмент, используемый в Linux для безопасной связи. Он использует комбинацию двух ключей (криптография с симметричным ключом и открытым ключом) для шифрования файлов.
50. uniq
Uniq — это инструмент командной строки, используемый для создания отчетов и фильтрации повторяющихся строк из файла.
53. tee
Команда Linux tee используется для связывания и перенаправления задач, вы можете перенаправить вывод и/или ошибки в файл, и он не будет отображаться в терминале.
54. tr
Команда tr (translate) используется в Linux в основном для перевода и удаления символов. Его можно использовать для преобразования прописных букв в строчные, сжатия повторяющихся символов и удаления символов.
Как найти файлы в Linux
Команда find имеет множество опций и функций, которые фильтруют файлы в соответствии с указанными условиями.
Найти синтаксис команды
Базовый синтаксис команды find:
Например, следующая команда будет искать текстовые файлы в каталоге / home .
Имейте в виду, что перед поиском файлов в вашем хранилище вам необходимо иметь права на чтение для этого конкретного каталога.
Искать файлы по имени
Чаще всего команда find используется для поиска файла по его имени. Чтобы найти файл по имени файла, используйте флаг -name с командой по умолчанию.
Вышеупомянутая команда будет искать файл с именем filename.txt в каталоге / home . Параметр -type f сообщает системе, что мы ищем файл .
Если вы хотите игнорировать регистр символов в имени файла, замените параметр -name на -iname .
Эта команда найдет файл, который имеет одно из следующих имен: имя файла, имя файла, имя файла, имя файла и т. Д.
Как и любую другую команду Linux, вы можете использовать . (точка), чтобы указать относительный путь к текущему каталогу.
Точно так же можно использовать для / root и ~ для / home .
Найти файлы по расширению
Поиск файлов с определенным расширением может помочь сузить результаты поиска. Чтобы найти файл по его расширению, используйте следующее регулярное выражение с флагами -name и -iname .
Эта команда отобразит список всех файлов с расширением .pdf
Обратите внимание, что вам нужно будет экранировать символ звездочки ( * ) кавычками ( «» ) или обратной косой чертой ( ), чтобы терминал интерпретировал его как подстановочный знак
Вы также можете инвертировать указанную выше команду, используя флаг -not . Следующая команда будет искать файлы без расширения .pdf .
Вы даже можете передать команду find по конвейеру с другими командами Linux. Например, чтобы изменить права модерации для каждого файла, который соответствует условию:
Эта команда выполнит поиск всех файлов PDF в каталоге / home и изменит их права доступа, чтобы любой мог читать, писать и выполнять эти файлы.
Поиск определенных типов файлов
Помимо файлов, команда find может искать и другие типы файлов. Каталоги, символические ссылки, сокеты и символьные устройства – вот некоторые из типов файлов, которые поддерживает find.
До сих пор мы использовали параметр -type f в команде find. Буква f означает файл . Для поиска файлов других типов в Linux замените f другими зарезервированными символами.
- f : обычные файлы
- d : каталоги
- l : символические ссылки
- c : символьные устройства
- b : блочные устройства
- p : именованный канал
- s : сокеты
Чтобы найти подкаталоги в каталоге / home :
Найти файлы по размеру
Флаг -size позволяет вам искать файлы, которые занимают определенное место на диске. Следующие суффиксы обозначают различные размеры файлов:
- b : блоки по 512 байт
- c : байты
- w : двухбайтовые слова
- k : килобайты
- M : мегабайты
- G : гигабайты
Чтобы найти все файлы размером 1 ГБ:
Для поиска файлов размером менее 1 ГБ добавьте символ минус ( – ) перед указанием размера:
Точно так же используйте оператор плюс ( + ), чтобы найти файлы размером более 1 ГБ:
Для поиска файлов в диапазоне размеров:
Найти файлы с помощью отметок времени
Возможно, вы уже знаете, что Linux назначает определенные временные метки каждому файлу в вашем хранилище. Эти отметки времени содержат время модификации, время изменения и время доступа.
Чтобы найти файлы с определенным временем модификации:
Вышеупомянутая команда распечатает все файлы, которые были изменены за последние пять дней. Точно так же вы можете использовать -atime и -ctime для фильтрации файлов по времени доступа и времени изменения.
Вы также можете использовать знаки плюс и минус, чтобы найти файлы, размер которых больше или меньше определенной отметки времени.
Поиск файлов с определенными разрешениями
Параметр -perm позволяет пользователям искать файлы с определенным набором разрешений.
Используйте символ косой черты ( ) для перечисления файла, если хотя бы одна категория имеет правильный набор предоставленных разрешений.
Найти и удалить файлы
Чтобы удалить все отфильтрованные файлы с помощью команды find, добавьте в конец команды флаг -delete .
Вышеупомянутая команда удалит все файлы PDF, которые находятся в каталоге / home .
Вы не сможете удалить непустые каталоги с помощью find. Вам нужно будет использовать команду rm для удаления таких папок в вашей системе Linux.
find — синтаксис и зачем оно нужно
find — утилита поиска файлов по имени и другим свойствам, используемая в UNIX‐подобных операционных системах. С лохматых тысячелетий есть и поддерживаться почти всеми из них.
Базовый синтаксис ключей (забран с Вики):
-name — искать по имени файла, при использовании подстановочных образцов параметр заключается в кавычки
Опция `-name’ различает прописные и строчные буквы; чтобы использовать поиск без этих различий, воспользуйтесь опцией `-iname’;
-type — тип искомого: f=файл, d=каталог, l=ссылка (link), p=канал (pipe), s=сокет;
-user — владелец: имя пользователя или UID;
-group — владелец: группа пользователя или GID;
-perm — указываются права доступа;
-size — размер: указывается в 512-байтных блоках или байтах (признак байтов — символ «c» за числом);
-atime — время последнего обращения к файлу (в днях);
-amin — время последнего обращения к файлу (в минутах);
-ctime — время последнего изменения владельца или прав доступа к файлу (в днях);
-cmin — время последнего изменения владельца или прав доступа к файлу (в минутах);
-mtime — время последнего изменения файла (в днях);
-mmin — время последнего изменения файла (в минутах);
-newer другой_файл — искать файлы созданные позже, чем другой_файл;
-delete — удалять найденные файлы;
-ls — генерирует вывод как команда ls -dgils;
-print — показывает на экране найденные файлы;
-print0 — выводит путь к текущему файлу на стандартный вывод, за которым следует символ ASCII NULL (код символа 0);
-exec command {} \; — выполняет над найденным файлом указанную команду; обратите внимание на синтаксис;
-ok — перед выполнением команды указанной в -exec, выдаёт запрос;
-depth или -d — начинать поиск с самых глубоких уровней вложенности, а не с корня каталога;
-maxdepth — максимальный уровень вложенности для поиска. «-maxdepth 0» ограничивает поиск текущим каталогом;
-prune — используется, когда вы хотите исключить из поиска определённые каталоги;
-mount или -xdev — не переходить на другие файловые системы;
-regex — искать по имени файла используя регулярные выражения;
-regextype тип — указание типа используемых регулярных выражений;
-P — не разворачивать символические ссылки (поведение по умолчанию);
-L — разворачивать символические ссылки;
-empty — только пустые каталоги.
Примерно тоже самое, только больше и в не самом удобочитаемом виде, т.к надо делать запрос по каждому ключу отдельно, можно получить по
Результатам будет нечто такое из чего можно вычленять справку по отдельному ключу или команде (кликабельно):
В качестве развлечения можно использовать:
Дабы получить мануал из самой системы по базису и ключам (тоже кликабельно);
Немного о примерах использования. Точно так же, оттуда же и тп. Просто для понимания как оно работает вообще. Наиболее просто, конечно, осознать это потренировавшись в той же консоли на реальной системе.
Как найти все файлы только для чтения
Как уже было сказано, команда 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 + sed
К результатам команды find можно сразу же применить
sed
find . -type f -name ‘*.php‘ -exec sed -i ‘s@python/old_file_name\.php@python/new_directory/new_name\.php@‘ {} \;
. означает, что ищем в текущей директории (и вложенных)
Эта команда заменяет везде
на
Следующий пример
find . -type f -name ‘*.php‘ -exec sed -n ‘/\/i\/aws\/oauth.php/ p‘ {} \;
Эта команда ищет по всем .php файлам строку /i/aws/oauth.php
Если нужно не найти или заменить строку а показать название файла, в котором есть определённые символы
— удобно воспользоваться связкой find + grep
Добавить в функцию my_function дополнительный аргумент — сразу в всех .php файлах.
find -type f -name «*.php« -exec sed ‘smy_function(\$old_arg1,\ \$old_arg2)my_function(\$old_arg1,\ \$old_arg2,\ \$new_arg1‘ {} \;
find -type f -name «*.php« -exec sed ‘smy\_function(\$old\_arg1,\ \$old\_arg2)my\_function(\$old\_arg1,\ \$old\_arg2,\ \$new\_arg1‘ {} \;
Команда find
find — команда принимает критерий поиска и возвращает найденные результаты. Например find /путь/до/директории/поиска критерий
wildcard (групповые символы) — могут использоваться для задания критерия поиска. Например, «*» wildcard означает поиск любого символа, т.е. «*.txt» будет искать любые текстовые файлы (файлы с расширением .txt) или «*script» будет искать любой текст где встречается слово script.
Рекурсивный поиск по умолчанию — команда find будет искать рекурсивно, т.е. поиск будет осуществлен в текущей директории и во всех вложенных директориях, вне зависимости от их количества и уровня вложенности.
ctime (change time) — время последнего изменения мета данных (данных о владельце, правах доступа и т.д.)
atime (access time) — время последнего доступа к файлу, чтения или записи.
mtime (modified time) — время последнего изменения содержимого файла.
Команды Linux, Связанные С Передачей Файлов
Эти команды используются для копирования файлов из одной системы в другую систему
87. scp
SCP — это программа безопасного копирования для передачи файлов или каталогов между хостами Linux в сети. SCP использует протокол ssh для передачи данных.
Пример того как локальный файл ‘examples.txt» скопировать на удаленный хост.
88. rsync
Rsync синхронизирует файлы и каталоги между локальными и удаленными машинами. Он может рекурсивно копировать файлы и каталоги, копировать символические ссылки, сохранять (разрешения, группу, время изменения и принадлежность) идентификатор файла.