Как использовать команду поиска в Linux? 40 примеров включены

Find – это мощный инструмент командной строки, который позволяет системным администраторам находить файлы и каталоги и управлять ими на основе широкого диапазона критериев поиска. Он может найти файлы по имени, типу или расширению, размеру, разрешениям и т. Д..


Помимо поиска файлов и каталогов, сочетание команды find с другими позволяет вам принимать меры по результатам. Добавление параметра -exec позволяет системным администраторам запускать внешние команды и выполнять такие действия, как копирование, перемещение, удаление или изменение разрешений файлов, соответствующих указанным критериям, таким как размер, имя и т. Д..

В этой статье мы начнем с объяснения основных команд поиска с примерами. Это покажет вам, как найти файлы и каталоги. Затем мы покажем вам, как использовать опцию -exec для работы с файлами или каталогами на основе их размера, разрешений и т. Д..

Общий синтаксис команды find:

find {path} {name -of-file или dir-to-search} {action-to-take}

куда,

  • путь указывает каталог.
  • name-of-file или dir-to-search: имя файла или каталога для поиска
  • действие: копировать, удалять, перемещать и т. д..

В этом уроке мы объясним, как найти файлы и каталоги, соответствующие указанным шаблонам. Мы также увидим, как выполнять действия с файлами или каталогами, которые находит команда find. Руководство основано на Ubuntu, но применимо к большинству дистрибутивов и версий Linux..

Contents

Найти файлы и каталоги

Найти конкретные файлы по имени или расширению

Чтобы найти определенный файл, выполните следующую команду из корня (/). Команда содержит точное имя файла, который вы ищете.

найти . -имя file22.txt

Вывод

./test/file22.txt
./sales/file22.txt

Обратите внимание, что результаты включают путь. Это важно, если вы не знаете каталог, в котором находится файл, или когда он находится в нескольких местах..

Вы также можете искать файл в другом каталоге, находясь в текущем месте. В этом случае вам нужно указать путь к каталогу, в котором вы хотите искать.

найти ./test -name file22.txt

Ищем конкретные файлы в другом каталоге

В нашем случае мы будем искать все те, которые начинаются с файла букв в тестовой директории.

найти файл ./test -name *

Вывод

./test/file22.txt
./test/file30.doc
./test/file1.txt
./ Тест / file5, док

Поиск файлов по расширению

Чтобы искать файлы с определенным расширением, добавьте его в команду.

найти . -name * .txt

Вывод

./test/subtest/subfil.txt
./test/file22.txt
./test/file1.txt
./home1/files32.txt
./home2/file22.txt
./qa/tags.txt

Поиск файлов и каталогов по имени

Используйте команду ниже для поиска файлов и каталогов, начинающихся с букв qa. На нашем компьютере у нас есть файлы qatree.txt и qa.txt, а также каталог с именем qa.

Если мы запустим команду;

найти ./ -имя "* контроль качества"

Возвращает следующий вывод

./test/qatree.pdf
./test/qa.txt
./ Главная / QA

Команда возвращает файлы и каталоги, соответствующие критериям поиска. Чтобы найти только файлы или каталоги, вам нужно указать это в команде.

Найти только файлы или каталоги

Только для файлов, используйте переключатель типа f.

Только файлы

найти ./ -тип f -name "* контроль качества"

Вывод

./test/qatree.pdf
./test/qa.txt

Только каталоги

Добавьте опцию типа d, чтобы найти только каталоги.

найти ./ -тип d -name "* контроль качества"

Вывод

./ Главная / QA

Команда поиска без учета регистра

Все поиски с ключом -name чувствительны к регистру и не дают результатов с заглавными буквами. Чтобы получить все случаи, используйте опцию -iname.

найти ./ – имя "* контроль качества"

Вывод

./test/qatree.pdf
./test/qa.txt
./test/QAtest.txt
./ Главная / QA

Поиск файла из нескольких каталогов

Чтобы найти файлы в разных каталогах, добавьте их пути в команду. В нашем случае мы проверим в тестовом и числовом каталогах.

найти ./test ./numeric -name file22.txt -type f

Вывод

./test/file22.txt
/root/numeric/file22.txt

Найти несколько файлов с разными расширениями из всех каталогов

Вы можете использовать команду find, чтобы найти несколько файлов с разными расширениями, такими как * .doc, * .txt * .pdf и т. Д. Это можно сделать отдельно, по одному расширению за раз, или используя только одну команду, включающую все желаемые расширения.

найти . -тип f (-имя "*.текст" -имя "* .pdf" -имя "* .doc" )

вывод

./test/subtest/subfil.txt
./test/qatree.pdf
./test/file22.txt
./test/qa.txt
./test/file30.doc
./books/acro.pdf
./data1/FILE22.txt
./docs/files32.txt

Найти файлы, содержащие определенный текст

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

Чтобы найти все файлы, содержащие слово гиперконвергенция », используйте;

find / -type f -exec grep -l -i "hyperconvergence" {};

Вывод

/ Корень / цифровая / HCI
/ Корень / HCIP

Опция –i позволяет команде игнорировать регистры и находит текст с заглавной буквы или нет, т.е. гиперконвергенция, гиперконвергенция и т. Д..

Чтобы найти файлы в определенном каталоге, просто добавьте его в команду

найти ./numeric -type f -exec grep -l -i "hyperconvergence" {};

Вывод

./ Цифровая / HCI

Поиск файлов и каталогов на основе размера

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

Варианты размера включают в себя;

c – байты

к – килобайт

М – Мегабайт

G – гигабайт

Найти файлы определенного размера – равного 30 МБ

Для поиска найдите все 30 МБ файлов

найти / размер 30 м

Найти файлы больше указанного размера

найти -size + 2M

Вывод

. /Downloads/ubuntu18043.iso
./.cache/pip/http/6/e/3/8/3/6e38383f41850c3e5705d48116bc52f81b92a80500f414305057 7a9c

Найти файлы размером менее 10 МБ в текущем каталоге

найти . тип f -size -10M

Найти файлы размером от 100 до 200 МБ

При поиске файлов в определенном диапазоне, например от 100 до 200 МБ

найти / -размер + 100М -размер -200М

Ищите каталоги размером более 20 КБ

find / -type d -size + 20k

Найти пустые файлы и каталоги.

файлы

find ./ -type f -size 0

или

find ./ -type f –empty

Справочники

find ./ -type d –empty

Поиск файлов по возрасту или времени изменения

Найти файлы старше n дней

find / path / -type f -name ‘* .txt’ -mtime +8

-Mtime +8 будет искать текстовые файлы старше 8 дней.

По дате модификации

Это будет искать файлы, измененные в течение последних 17 часов

найти . -mtime -17 -type f

Поиск каталогов, измененных за последние 10 дней

найти . -mtime -10 -типа d

Найти файлы на основе доступа или модификации

Найти файлы на основе даты или времени доступа. Это позволяет просматривать файлы, к которым обращались или не обращались в течение указанного периода.

Чтобы увидеть файлы, которые не были доступны в течение последних 10 дней в домашнем каталоге.

найти / home -atime +10

Доступ к файлам ровно 10 дней назад

найти / home -atime 10

Доступ за последние 10 дней

найти / home -atime -10

Найти файлы, измененные за последние n дней

Вы также можете искать файлы в каталоге / home, измененные за последние 10 дней, с помощью команды;

find / home -mtime -10

Найти файлы, измененные в течение определенного периода.

Например, все файлы, измененные от 6 до 15 дней назад в домашнем каталоге.

find / home -type f -mtime +6 -mtime -15

Доступ к файлам и каталогам за последние 10 минут

Чтобы найти файлы, к которым обращались за последние 10 минут, используйте опцию -amin.

найти . -амин -10 -типа f

Вывод

./.bash_history
./[Электронная почта защищена]: ~ #

Доступ к каталогам за последние 10 минут

найти . -амин -10 -тип d

Найти файлы, соответствующие определенным разрешениям

Синтаксис

$ find -perm mode

Где режим – это разрешение, которое может быть числовым, например 644, 655, 700, 777 и т. Д., Или буквы, такие как u = x, a = r + x и т. Д..

Вы можете указать режим следующими тремя способами.

  1. Без префикса, когда вы хотите найти файлы с точными указанными разрешениями.
  2. С «-» для файлов с как минимум указанным разрешением. Это возвращает файлы с указанными, а также с более высокими разрешениями.
  3. Использование «/» требует указания владельца или группы с правами доступа к файлу.

Поиск файлов с разрешением 777

найти -perm 777

Вывод

./ file1

Найти файлы по крайней мере с 766
найти -perm -766

Вывод

./ file2
./ file1

Команда ищет все файлы, в которых

  • Владелец файла имеет права на чтение / запись / выполнение.
  • Группа имеет права на чтение / запись
  • Другие имеют разрешение на чтение / запись

Таким образом, он возвращает два файла, которые соответствуют этому критерию – file1 и file2. Файлы не должны иметь точные разрешения 766 и могут иметь дополнительные, но должны иметь как минимум указанные.

Найти файлы, доступные для записи владельцу

Теперь мы будем использовать «/» для поиска файлов, доступных для записи либо их владельцу, либо группе, либо другим.

найти -perm / 222
.
./ file2
./ file3
./ file1

Вышесказанное ищет файлы, доступные для записи их владельцу или группе.
Это возвращает файлы, которые доступны для записи обоим, но не обязательно обоим. Чтобы увидеть файлы, для которых оба имеют права на запись, используйте префикс -.

найти -perm -220

Вывод

./ file2
./ file1

Найти файлы, принадлежащие пользователю

Найти все файлы, принадлежащие Джеку

найти / дом -пользовательский разъем

Вывод

/ Главная / домкрат
/home/jack/examples.desktop
/home/jack/.gnupg
/home/jack/.gnupg/private-keys-v1.d
/home/jack/ans.cgi

Найти конкретные файлы, принадлежащие пользователю

Найти все текстовые файлы, принадлежащие Джеку

find / home -user jack -iname "*.текст"

Вывод

/home/jack/docs/file32.txt

Найти и перечислить файлы и каталоги вместе с их разрешениями

найти имя "* .conf" | ls -l

Вывод

всего 120
drwxr-xr-x 2 root root 4096 31 декабря 13:19 backup2
drwxr-xr-x 2 root root 4096 4 января 11:57 Desktop
drwxr-xr-x 2 root root 4096 31.12 11:50 Документы
drwxr-xr-x 2 root root 4096 31 декабря 12:27 Загрузки
-rw-r – r– 1 root root 0 янв. 4 12:02 file22.doc
drwxr-xr-x 2 root root 4096 4 января 12:14 file23
-rw-r – r– 1 root root 0 янв. 4 12:23 file23.txt

Найти и действовать на результаты

В этом разделе мы рассмотрим, как вы можете действовать с файлами, которые соответствуют шаблону, указанному в команде find..

Найти файлы и изменить разрешения

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

[Электронная почта защищена]: ~ / ver $ ls -la

всего 8
drwxrwxr-x 2 jack jack 4096 3 января 14:11 .
drwxr-xr-x 8 jack jack 4096 3 января 14:05 ..
-rwxr-xr-x 1 jack jack 0 янв. 3 14:06 ans.php
-rw-rw-r– 1 Джек Джек 0 Янв 3 14:11 base.php
-rwxr-xr-x 1 jack jack 0 янв. 3 14:06 query.php
-rw-rw-r– 1 Джек Джек 0 Янв 3 14:11 qust.php
-rwxr-xr-x 1 jack jack 0 янв. 3 14:06 text.php
-rw-rw-r– 1 Джек Джек 0 Янв 3 14:11 var.php

Теперь мы будем искать все файлы PHP (выше) и заменять их разрешения на 755

найти вер-имя "* .php" -тип f -exec chmod 755 {};

Команда ищет файлы PHP в каталоге ver, а затем устанавливает для них разрешение 755 (rwxr-xr-x)

Результаты

[Электронная почта защищена]: ~ / ver $ ls -la
всего 8
drwxrwxr-x 2 jack jack 4096 3 января 14:11 .
drwxr-xr-x 8 jack jack 4096 3 января 14:05 ..
-rwxr-xr-x 1 jack jack 0 янв. 3 14:06 ans.php
-rwxr-xr-x 1 jack jack 0 янв. 3 14:11 base.php
-rwxr-xr-x 1 jack jack 0 янв. 3 14:06 query.php
-rwxr-xr-x 1 jack jack 0 янв. 3 14:11 qust.php
-rwxr-xr-x 1 jack jack 0 янв. 3 14:06 text.php
-rwxr-xr-x 1 jack jack 0 янв. 3 14:11 var.php

Найти и изменить права доступа к файлам и каталогам

Найдите файлы с 644 разрешениями и измените их на 655 разрешений

найти . -тип f -perm 644 -exec chmod 655 {};

Вы также можете искать каталоги с 644 разрешениями и заменять их на 755.

найти . тип d -perm 644

Вывод

./ документы

Папка docs имеет 644 разрешения

drwxrwxr-x 2 jack jack 4096 3 января 12:45 документы

Чтобы установить его на 755, мы запускаем

найти . -тип d -perm 644 -exec chmod 755 {};

Теперь мы можем проверить еще раз, чтобы увидеть, что именно 755

найти . тип d -perm 755

Вывод
.
./ документы

Сверху видно, что каталоги root и docs имеют разрешения 755.

Команда Ls –la дает следующие детали

drwxr-xr-x 2 jack jack 4096 3 января 12:45 документы

Найти и скопировать файлы или каталоги

Найти и скопировать определенный файл в каталог

Команда ниже найдет файл file22.txt и скопирует его в каталог ~ / tmp / images.

find -iname file22.txt -exec cp {} ~ / tmp / images;

Найти и скопировать один тип файлов в каталог

Чтобы найти файлы, например изображения с расширением jpg, в текущем каталоге и скопировать их в другое место, например, в папку с изображениями, используйте;

find -iname ‘* .jpg’ -exec cp {} ~ / tmp / images;

Это найдет и скопирует все файлы jpg в папку ~ / tmp / images.

Найти и скопировать один файл во многие каталоги

Найти и скопировать один в несколько каталогов.

find ~ / tmp / dir1 / ~ / tmp / dir2 / $ HOME / 3 / -maxdepth 0 -exec cp ~ / numeric / hci {};

Это найдет файл hci file и скопирует его в три каталога / tmp / dir1 / / tmp / dir2 / и $ HOME / 3 /

Найти и переместить файлы в другой каталог

Переместить известный файл из каталога в другой. Переместить файл universal.php;

find ~ / folder / -type f -name universal.php -exec mv {} ~ / numeric /;

Поиск и перемещение файлов с определенным расширением в другую папку

find ~ / numeric / -type f -name ‘* .php’ -exec mv {} ~ / folder /;

Найти определенные файлы и переместить в определенную другую папку

find -type f -name uni *. * -exec mv {} ~ / unifiles /;

Команда ищет все файлы, имена которых начинаются с uni и имеют любое расширение. Затем он перемещает их в каталог / unifiles /

Найти и переместить файлы в зависимости от возраста

Найти и переместить файлы старше указанного дня в другое место, например в архив.

find / path / -type f -name ‘* .pdf’ -mtime +20 -exec mv {} / backup1 /;

Это будет искать PDF-файлы старше 20 дней и переместить их в каталог backup1.

Найти и удалить файлы и каталоги

Синтаксис для поиска и удаления файлов или каталогов в текущем каталоге:

найти . -тип f -name "файл для удаления" -exec rm -f {}; удалить только файлы или

найти . -типа d -name "реж к удалению" -exec rm -rf {}; удалять только каталоги

Найти и удалить только определенные файлы

Чтобы найти и удалить файлы, начинающиеся с til, используйте;

найти . -тип f -name "сезам *" -exec rm {};

Чтобы найти и удалить каталоги, начинающиеся с til

найти . -типа d -name "сезам *" -exec rm {};

Удалить как файлы, так и каталоги

найти . -имя "сезам *" -exec rm -rf {};

Это удалит как файлы, так и каталоги, начинающиеся с букв до.

Удалить по расширению

Ниже описано, как вы можете найти и удалить все текстовые файлы в текущем каталоге. Замените txt другим расширением, таким как bak, pdf или любым другим, которое вы хотите удалить..

найти . -тип f -name "*.текст" -exec rm -f {};

Если вы хотите, чтобы система запрашивала подтверждение перед удалением каждого файла, добавьте параметр -i, как показано ниже.

найти . -тип f -name "*.текст" -exec rm -i {};

Вывод

rm: удалить обычный пустой файл ‘./File22.txt’? Y
rm: удалить обычный пустой файл ‘./file22.txt’? Y
rm: удалить обычный пустой файл ‘./file23.txt’?

По умолчанию -rm не удаляет каталоги, и вам необходимо использовать параметр -r, чтобы обеспечить рекурсивное удаление. Это гарантирует удаление пустых каталогов и тех, которые содержат файлы. Опция -f форсирует удаление и используется как для файлов, так и для каталогов.

Найти и удалить файлы старше n дней

Найти и удалить файлы резервных копий старше 20 дней из текущего каталога.

найти . -тип f -name ‘* .bak’ -mtime +20 -exec rm {};

Это удалит все файлы .bak старше 20 дней.

Найти и удалить только каталоги

Чтобы удалить каталог с именем dir22

найти . -тип d -name dir22 -exec rm -rf {};

Убедитесь, что вы соответствуете имени каталога или используйте опцию -iname.

найти . -тип d -имя Dir22 -exec rm -rf {};

Удаляет Dir22 и Dir22

Для подтверждения перед удалением используйте опцию -i.

найти . -тип d -имя Dir22 -exec rm -rf -i {};

Вывод
rm: удалить каталог ‘./Dir22’? N
rm: удалить каталог ‘./dir22’? Y

В нашем случае мы набрали n для каталога Dir22, который не будет удален, и y для dir22, который теперь будет удален.

Найти и удалить пустые файлы

Вы можете использовать любую из следующих команд, чтобы найти пустые файлы и удалить их автоматически.

find ./ -type f -size 0 -exec rm -f {};

или
найти ./ -тип f -size 0 | xargs rm -f
или
find ./ -type f -size 0 – удалить

Найти и удалить пустые каталоги

Для удаления пустых каталогов мы будем использовать опцию d.

find ./ -type d -empty -exec rmdir {};

Другая альтернатива – использовать вместо удаления.

find ./ -type d -empty -delete

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

Чтобы избежать случайного удаления, рекомендуется использовать учетную запись пользователя без полномочий root. Кроме того, убедитесь, что вы удаляете нужные файлы, которые не являются полезными, и что у вас есть резервная копия всех ваших файлов данных на всякий случай.

Что дальше?

Попробуйте их в своей лаборатории или в среде, где нет производства. Посмотрите, можете ли вы использовать некоторые из них для автоматизации очистки файловой системы с помощью Crontab. И, чтобы освоить Linux, проверьте это онлайн курс.

TAGS:

  • Linux

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map