Как найти файлы found

Обновлено Обновлено: 01.02.2022
Опубликовано Опубликовано: 25.07.2016

Утилита find представляет универсальный и функциональный способ для поиска в Linux. Данная статья является шпаргалкой с описанием и примерами ее использования.

Синтаксис
Примеры
    Поиск по имени
    По дате
    По типу файла
    По правам
    По содержимому
    С сортировкой по дате изменения
    Лимиты
    Действия над найденными объектами
Запуск по расписанию в CRON

Общий синтаксис

find <где искать> <опции>

<где искать> — путь к корневому каталогу, откуда начинать поиск. Например, find /home/user — искать в соответствующем каталоге. Для текущего каталога нужно использовать точку «.».

<опции> — набор правил, по которым выполнять поиск.

* по умолчанию, поиск рекурсивный. Для поиска в конкретном каталоге можно использовать опцию maxdepth.

Описание опций

Опция Описание
-name Поиск по имени.
-iname Регистронезависимый поиск по имени.
-type

Тип объекта поиска. Возможные варианты:

  • f — файл;
  • d — каталог;
  • l — ссылка;
  • p — pipe;
  • s — сокет.
-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
-print Показать найденное.
-print0 Путь к найденным объектам.
-exec <команда> {} ; Выполнить команду над найденным.
-ok Выдать запрос перед выполнением -exec.

Также доступны логические операторы:

Оператор Описание
-a Логическое И. Объединяем несколько критериев поиска.
-o Логическое ИЛИ. Позволяем команде find выполнить поиск на основе одного из критериев поиска.
-not или ! Логическое НЕ. Инвертирует критерий поиска.

Полный набор актуальных опций можно получить командой man find.

Примеры использования 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 дней назад.

Или в промужутке:

find . -mmin -20 -mmin +10 -type f

* найти все файлы, которые менялись более 10 минут, но не более 20-и.

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 %pn’ | sort -r

* команда найдет все файлы в каталоге /data, добавит к имени дату модификации и отсортирует данные по имени. В итоге получаем, что файлы будут идти в порядке их изменения.

Лимит на количество выводимых результатов

Самый распространенный пример — вывести один файл, который последний раз был модифицирован. Берем пример с сортировкой и добавляем следующее:

find /data -type f -printf ‘%TY-%Tm-%Td %TT %pn’ | 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. Переместить найденные файлы:

find . -name «sess_*» -type f -exec mv {} /new/path/ ;

* в данном примере мы переместим все найденные файлы в каталог /new/path/.

4. Вывести на экран количество найденных файлов и папок, которые заканчиваются на .tmp:

find . -name «*.tmp» | wc -l

5. Изменить права:

find /home/user/* -type d -exec chmod 2700 {} ;

* в данном примере мы ищем все каталоги (type d) в директории /home/user и ставим для них права 2700.

6. Передать найденные файлы конвееру (pipe):

find /etc -name ‘*.conf’ -follow -type f -exec cat {} ; | grep ‘test’

* в данном примере мы использовали find для поиска строки test в файлах, которые находятся в каталоге /etc, и название которых заканчивается на .conf. Для этого мы передали список найденных файлов команде grep, которая уже и выполнила поиск по содержимому данных файлов.

7. Произвести замену в файлах с помощью команды sed:

find /opt/project -type f -exec sed -i -e «s/test/production/g» {} ;

* находим все файлы в каталоге /opt/project и меняем их содержимое с test на production.

Чистка по расписанию

Команду find удобно использовать для автоматического удаления устаревших файлов.

Открываем на редактирование задания cron:

crontab -e

И добавляем:

0 0 * * * /bin/find /tmp -mtime +14 -exec rm {} ;

* в данном примере мы удаляем все файлы и папки из каталога /tmp, которые старше 14 дней. Задание запускается каждый день в 00:00.
* полный путь к исполняемому файлу find смотрим командой which find — в разных UNIX системах он может располагаться в разных местах.

Практические примеры, которые приведены в этой статье, помогут вам освоить очень эффективную и крайне полезную команду find.

Она используется для поиска файлов и папок через командную строку Linux.

Команда find — одна из самых мощных и широко применимых команд. При этом она крайне объёмная и насчитывает более 50 опций, в которых легко запутаться, особенно в сочетании с командами exec или xargs.

Если вы сисадмин или разработчик, избежать команды find при работе с командной строкой не получится. Так что давайте научимся её не бояться и пользоваться её возможностями в полной мере.

Для этого разберём самые распространённые случаи практического применения команды find. Но для начала покажу вам синтаксис и принцип работы с командой.

Команда find в Linux

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

find [directory to search] [options] [expression]

Всё, что в квадратных скобках, указывать необязательно. А значит, выполнить команду find можно вообще без опций и параметров. Она выдаст список всех файлов и папок в текущем расположении. Мало полезного, да?

Так что давайте взглянем на параметры подробнее:

  • directory to search (папка поиска) — это расположение, с которого вы хотите начать поиск. Поиск по умолчанию рекурсивный и начинается с текущего расположения.
  • options (опции) содержит указание типа поиска: по имени, типу файла, времени изменения и так далее — тут может быть более 50 вариантов.
  • expression (выражение) содержит поисковый запрос. Если вы ищете файл по имени, параметр expression должен содержать имя файла. Если ищете файлы с именем, соответствующим заданному шаблону, поисковое выражение — это шаблон.

Приведу простой пример:

find . -type f -name myfile

Такая команда выполнит поиск файла (именно файла, не папки) с именем myfile в текущей папке и подпапках. Опция -type f сужает поиск до файлов. Точка (.) указывает на текущую папку.

Рассмотрим несколько примеров применения команды find.

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

Так выполняется поиск файлов и папок по имени:

find . -name SEARCH_NAME

Поскольку тип объекта не указан, команда выполняет поиск и файлов, и папок.

Пример ниже — поиск файлов и папок с именем «mystuff»:

abhishek@LHB:~/Examples$ find -name mystuff
./new/mystuff
./mystuff

Поиск только файлов или только папок

Если нужно искать только файлы, на помощь придёт опция type -f:

find . -type f -name SEARCH_NAME

Тип и имя можно указывать в любом порядке. Возьмём пример выше и ограничим круг поиска файлами:

abhishek@LHB:~/Examples$ find -type f -name mystuff
./mystuff

Если нужно найти папку, укажите тип type -d:

find . -type d -name SEARCH_NAME

Вот пример нашего поиска уже по папкам:

abhishek@LHB:~/Examples$ find -type d -name mystuff
./new/mystuff

Поиск без учёта регистра

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

find . -type f -iname SEARCH_NAME

С поиском по папкам (type -d) это тоже работает.

abhishek@LHB:~/Examples$ find -iname mystuff
./new/mystuff
./MyStuff
./mystuff

Скриншот последних трёх примеров:

image

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

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

Скажем, вы хотите найти все файлы С++ в текущих папках. Файлы С++ имеют расширение .cpp, и вот как их можно найти:

find . -type f -name "*.cpp"

С такими опциями команда find найдёт только файлы (-type f) с именами, оканчивающимися на .cpp.

abhishek@LHB:~$ find . -type f -name "*.cpp"
./file.cpp
./.cargo/registry/src/github.com-1ecc6299db9ec823/libz-sys-1.1.3/src/zlib/contrib/iostream2/zstream_test.cpp
./.cargo/registry/src/github.com-1ecc6299db9ec823/libz-sys-1.1.3/src/zlib/contrib/iostream/test.cpp
./.cargo/registry/src/github.com-1ecc6299db9ec823/libz-sys-1.1.3/src/zlib/contrib/iostream/zfstream.cpp

При работе с командой find всегда заключайте поисковое выражение в двойные кавычки.

С чем связана рекомендация заключать поисковый запрос в двойные или одинарные кавычки? Дело в том, что без кавычек оболочка будет работать с символом * как с джокером и выполнит подстановку.

Вот что будет, если ввести запрос без кавычек:

find . -type f -name *.cpp

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

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

image

В нашем случае файл .cpp всего один, и после подстановки команда выглядит так: find . -type f -name file.cpp. Она работает, поскольку file.cpp — корректный поисковый запрос.

А вот файлов .txt в той же папке два, и когда команда расширяется до find . -type f -name another.txt new.txt, выводится предупреждение, потому что поисковых запросов больше одного.

Именно поэтому сам поисковый запрос всегда следует заключать в двойные кавычки.

Поиск нескольких файлов с несколькими расширениями (или условием)

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

Вместо того чтобы прогонять команду find несколько раз, введите её один раз с опцией -o, которая работает как логическое условие «или»:

find . -type f -name "*.cpp" -o -name "*.txt" 

Например:

abhishek@LHB:~/Examples$ find . -type f -name "*.txt" -o -name "*.cpp"
./new.txt
./file.cpp
./new/new.txt
./new/dir2/another.txt
./new/dir1/new.txt
./another.txt

Поиск файлов в заданной папке

Все приведённые примеры иллюстрируют поиск в текущей папке, потому что команда включает в себя точку (.).

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

abhishek@LHB:~/Examples$ find ./new -name mystuff
./new/mystuff

Поиск файлов в нескольких папках

Если нужные вам файлы могут находиться в нескольких папках, можно выполнить поиск во всех этих расположениях за один раз. Просто укажите все пути к папкам при введении команды find:

find ./location1 /second/location -type f -name "pattern"

Поиск пустых файлов и папок

Опция -empty позволяет использовать команду find для поиска пустых файлов и папок.

Найти таковые в текущей папке можно следующим образом:

find . -empty

Можно указать тип объектов, чтобы искать только файлы или только папки:

find . -empty -type f

Кроме того, можно в таком режиме искать файлы по имени:

find . -empty -type f -name "*.cpp"

image

Поиск крупных и мелких файлов (поиск по размеру файла)

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

Используется опция -size с аргументом +N для файлов размером более N и -N для файлов размером менее N.

А вот как можно найти файлы точного заданного размера (50 КБ):

find . -size 50k

Так выполняется поиск файлов размером более 1 ГБ в текущей папке:

find . -size +1G

А так — файлов, не превышающих 20 байт:

find . -size -20c

Для поиска файлов размером более 100 МБ, но менее 2ГБ, введите:

find . -size +100M -size -2G

Поиск по размеру тоже можно сочетать с поиском по имени файла. Таким образом, найти в корневом каталоге все файлы размером более 500 МБ с именем, оканчивающимся на .log, можно так:

find / -size +500M -name "*.log"

Для справки:

  • c – байты
  • k – килобайты
  • M – мегабайты
  • G – гигабайты

Поиск недавно изменённых файлов (поиск по времени изменения или создания)

Вы ведь знакомы с параметрами mtime, atime и ctime?

  • Mtime – время последнего изменения файла
  • Ctime – время создания файла
  • Atime – время последнего доступа к файлу

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

Найти все файлы, претерпевшие изменения за последние трое суток (3*24ч), можно так:

find . -type f -mtime -3

А все файлы, созданные пять и более дней назад, ищутся так:

find . -type f -ctime +5

Понимаю, что 24 часа — большой срок. Что если нужно выявить файлы, изменённые всего пару минут назад? Для этого предусмотрены опции mmin, amin и cmin.

Так выглядит команда поиска всех файлов, изменённых за последние пять минут:

find . -type f -mmin -5

image

Можно не только указать имя файла, но и ограничить временной промежуток с двух сторон. Команда ниже выполнит поиск всех файлов .java, изменённых не ранее 30 и не позднее 20 минут назад.

find . -type f -mmin +20 -mmin -30 -name "*.java"

Поиск файлов с определёнными настройками доступа

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

Команда find позволяет выполнить поиск файлов по разрешению и режиму доступа.

find -perm mode

Поищем в текущей папке, к примеру, все файлы с режимом доступа 777:

find . -perm 777

А так можно найти все файлы с правами на чтение и запись для всех типов пользователей (только точное совпадение; файлы с правами на выполнение для всех не отобразятся):

find . -perm a=r+w

Поиск файлов по владельцу

Можно также найти файлы, принадлежащие определённому пользователю.

Вот как обнаружить в текущей папке все файлы пользователя Джона:

find . -type f -user John

Эта опция сочетается с другими, будь то размер или время и имя файла:

find . -type f -user John -name "*.cpp"

Отключение рекурсивного поиска для поиска только в текущей папке

По умолчанию команда find выполняет поиск во всех подпапках текущего расположения. Если это не требуется, можно ограничить глубину поиска значением «1». Так вы ограничитесь поиском в текущей папке, не залезая в подпапки.

find . -maxdepth 1 -type f -name "*.txt"

image

Исключение папки из поиска

Если нет необходимости производить поиск в той или иной папке, можно исключить её с помощью опций path, prune и логического «или».

find . -path "./directory_exclude/*" -prune -o -name SEARCH_NAME

Будьте внимательны: путь к папке должен оканчиваться на *, затем идёт -prune и только потом -o.

Попросту говоря, при поиске с опцией prune папка, указанная с помощью path, игнорируется. Prune всегда сопровождается флагом -o (логическое «или»), чтобы папки, которые не были исключены, просматривались на наличие искомого объекта.

Дальнейшая работа с результатами команды find: exec и xargs

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

Например, как найти файлы с именем, соответствующим определённому шаблону, и переименовать их за одно действие? Или выявить и удалить пустые файлы?

Вам уже известно, что в Linux можно использовать перенаправление ввода-вывода, чтобы объединить результаты одной команды с вводом другой. Но с результатами команды find это не сработает — по крайней мере, не напрямую.

Чтобы выполнить действия над результатом команды find, есть два варианта:

  • Применить exec
  • Применить xargs

Использование find и exec

Допустим, вам нужен подробный список (ls -l) файлов, найденных командой find. Вот как его получить:

find . -type f -name "*.txt" -exec ls -l {} +

Результат будет таким:

abhishek@LHB:~/Examples$ find . -type f -name "*.txt" -exec ls -l {} +
-rw-rw-r-- 1 abhishek abhishek 39 Oct 13 19:30 ./another.txt
-rw-rw-r-- 1 abhishek abhishek 35 Oct 13 15:36 ./new/dir1/new.txt
-rw-rw-r-- 1 abhishek abhishek 35 Oct 13 15:36 ./new/dir2/another.txt
-rw-rw-r-- 1 abhishek abhishek 35 Oct 13 18:51 ./new/mystuff/new.txt
-rwxrwxrwx 1 abhishek abhishek 35 Oct 13 15:37 ./new/new.txt
-rw-rw-r-- 1 abhishek abhishek 35 Oct 13 18:16 ./new.txt

Многие забывают ввести {} + в конце команды exec. Но это необходимо — как и пробел между скобками {} и плюсом +.

Фигурные скобки ссылаются на результат выполнения команды find. Их содержимое может иметь следующий вид: {файл 1, файл 2, файл 3}. Символ + используется как конец команды exec.

Есть ещё один вариант оформления exec:

find . -type f -name "*.txt" -exec ls -l {} ;

В данном случае плюс заменён на точку с запятой. Дополнительная косая черта означает, что точка с запятой не является специальным символом.

Преимущество сочетания {} + заключается в меньшем количестве команд ( ls -l file1 file2 file3), тогда как комбинация {} ; запустит цепочку ls -l file1, ls -l file2 и так далее.

Однако сочетание {} ; даёт возможность использовать {} несколько раз в одном и том же выражении exec. Так, приведённая ниже команда переименует все обнаруженные файлы с расширением .old.

find . -type f -name "*.txt" -exec mv {} {}.old ;

Использование команды xargs

Многие пользователи Linux сталкиваются с необходимостью перенаправления ввода-вывода довольно часто. Но команда exec с цепочкой символов {} + кажется им слишком сложной.

И тут на помощь приходит xargs. Нужно просто перенаправить вывод команды find в команду xargs через конвейер.

find . -type f -name "*.txt" | xargs ls -l

image

Синтаксис куда проще, верно? К тому же команда xargs тоже весьма эффективна. Подробнее о ней — в статье по ссылке.

Сочетание команд find и grep

Теперь вы умеете совмещать команду find с xargs и exec, и пора перейти на следующий уровень — объединить find и grep.

Для сисадминов и разработчиков комбинация команд find и grep — одна из самых распространённых и вместе с тем самых полезных.

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

Например, вам нужно найти все файлы .txt, в которых есть имя «Alice». Объединить команды find и grep можно так:

find . -type f -name "*.txt" -exec grep -i alice {} +

А можно с помощью xargs:

find . -type f -name "*.txt" | xargs grep -i alice

image

Конечно, пример элементарный, но если команда grep вам знакома, можете использовать её на своё усмотрение.

И это далеко не все возможности команды find…

Перечислить все опции и примеры использования команды find практически невозможно. Её возможностям нет границ, но если вы освоите её принципы, она окажется очень кстати во многих ситуациях. Решающий фактор — как сочетается логика действия разных опций и команд.

Надеюсь, моя подборка примеров использования find была для вас полезна. Если у вас есть вопросы или предложения, как сделать эту статью лучше, добро пожаловать в комментарии.


НЛО прилетело и оставило здесь промокоды для читателей нашего блога:

— 15% на все тарифы VDS (кроме тарифа Прогрев) — HABRFIRSTVDS.

— 20% на выделенные серверы AMD Ryzen и Intel Core — HABRFIRSTDEDIC.

Доступно до 31 декабря 2021 г.

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

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

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

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

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

Где,

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

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

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

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

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

find . -name file22.txt

Выход

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

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

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

find ./test -name file22.txt

Поиск определенных файлов в другом каталоге

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

find ./test -name file*

Выход

./test/file22.txt
./test/file30.doc
./test/file1.txt
./test/file5,doc

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

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

find . -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.

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

find ./ -name "qa*"

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

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

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

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

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

Только файлы

find ./ -type f -name "qa*"

Выход

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

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

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

find ./ -type d -name "qa*"

Выход

./home/qa

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

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

find ./ -iname "qa*"

Выход

./test/qatree.pdf
./test/qa.txt
./test/QAtest.txt
./home/qa

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

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

find ./test ./numeric -name file22.txt -type f

Выход

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

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

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

найти . -type f ( -name «*.txt» -o -name «*.pdf» -o -name «*.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" {} ;

Выход

/root/numeric/hci
/root/HCIP

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

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

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

Выход

./numeric/hci

Ознакомьтесь с другими примерами команд grep.

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

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

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

в — байты

к — килобайт

М — Мегабайты

Г – гигабайты

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

Для поиска найдите все файлы размером 30 МБ.

find / -size 30M

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

find -size +2M

Выход

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

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

find . -type f -size -10M

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

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

find / -size +100M -size -200M

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

найти / -тип d -размер +20k

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

Файлы

найти ./ -тип f -размер 0

или же

find ./ -type f –empty

Каталоги

find ./ -type d –empty

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

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

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

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

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

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

find . -mtime -17 -type f 

Ищет каталоги, измененные за последние 10 дней.

find . -mtime -10 -type d 

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

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

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

find /home -atime +10

Файлы доступны ровно 10 дней назад

find /home -atime 10

Доступ в течение последних 10 дней

find /home -atime -10

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

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

find /home -mtime -10 

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

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

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

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

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

find . -amin -10 -type f

Выход

./.bash_history
./[email protected]:~#

Каталоги, к которым обращались в течение последних 10 минут

find . -amin -10 -type d

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

Синтаксис

$ find -perm mode

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

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

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

    find -perm 777

    Выход

    ./file1

    Найдите файлы с размером не менее 766
    найти -пермь -766

    Выход

    ./file2
    ./file1

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

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

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

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

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

    find -perm /222
    .
    ./file2
    ./file3
    ./file1

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

    find -perm -220

    Выход

    ./file2
    ./file1

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

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

    find /home -user jack

    Выход

    /home/jack
    /home/jack/examples.desktop
    /home/jack/.gnupg
    /home/jack/.gnupg/private-keys-v1.d
    /home/jack/ans.cgi

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

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

    find /home -user jack -iname "*.txt"

    Выход

    /home/jack/docs/file32.txt

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

    find -name "*.conf" | ls -l

    Выход

    total 120
    drwxr-xr-x 2 root root 4096 Dec 31 13:19 backup2
    drwxr-xr-x 2 root root 4096 Jan 4 11:57 Desktop
    drwxr-xr-x 2 root root 4096 Dec 31 11:50 Documents
    drwxr-xr-x 2 root root 4096 Dec 31 12:27 Downloads
    -rw-r--r-- 1 root root 0 Jan 4 12:02 file22.doc
    drwxr-xr-x 2 root root 4096 Jan 4 12:14 file23
    -rw-r--r-- 1 root root 0 Jan 4 12:23 file23.txt

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

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

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

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

    [email protected]:~/ver$ ls -la
    
    total 8
    drwxrwxr-x 2 jack jack 4096 Jan 3 14:11 .
    drwxr-xr-x 8 jack jack 4096 Jan 3 14:05 ..
    -rwxr-xr-x 1 jack jack 0 Jan 3 14:06 ans.php
    -rw-rw-r-- 1 jack jack 0 Jan 3 14:11 base.php
    -rwxr-xr-x 1 jack jack 0 Jan 3 14:06 query.php
    -rw-rw-r-- 1 jack jack 0 Jan 3 14:11 qust.php
    -rwxr-xr-x 1 jack jack 0 Jan 3 14:06 text.php
    -rw-rw-r-- 1 jack jack 0 Jan 3 14:11 vary.php

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

    find ver -name "*.php" -type f -exec chmod 755 {} ;

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

    Полученные результаты

    [email protected]:~/ver$ ls -la
    total 8
    drwxrwxr-x 2 jack jack 4096 Jan 3 14:11 .
    drwxr-xr-x 8 jack jack 4096 Jan 3 14:05 ..
    -rwxr-xr-x 1 jack jack 0 Jan 3 14:06 ans.php
    -rwxr-xr-x 1 jack jack 0 Jan 3 14:11 base.php
    -rwxr-xr-x 1 jack jack 0 Jan 3 14:06 query.php
    -rwxr-xr-x 1 jack jack 0 Jan 3 14:11 qust.php
    -rwxr-xr-x 1 jack jack 0 Jan 3 14:06 text.php
    -rwxr-xr-x 1 jack jack 0 Jan 3 14:11 vary.php

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

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

    find . -type f -perm 644 -exec chmod 655 {} ;

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

    find . -type d -perm 644

    Выход

    ./docs   

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

    drwxrwxr-x 2 jack jack 4096 Jan 3 12:45 docs

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

    find . -type d -perm 644 -exec chmod 755 {} ;

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

    find . -type d -perm 755

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

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

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

    drwxr-xr-x 2 jack jack 4096 Jan 3 12:45 docs

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

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

    Приведенная ниже команда найдет файл 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 и скопирует его в три каталога /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.

    Поиск и удаление файлов и каталогов

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

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

    найти . -type d -name «каталог для удаления» -exec rm -rf {} ; удалять только каталоги

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

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

    find . -type f -name "til*" -exec rm {} ; 

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

    find . -type d -name "til*" -exec rm {} ;

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

    find . -name "til*" -exec rm -rf {} ; 

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

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

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

    find . -type f -name "*.txt" -exec rm -f {} ;

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

    find . -type f -name "*.txt" -exec rm -i {} ;

    Выход

    rm: remove regular empty file './File22.txt'? y
    rm: remove regular empty file './file22.txt'? y
    rm: remove regular empty file './file23.txt'?

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

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

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

    find . -type f -name '*.bak' -mtime +20 -exec rm {} ;

    Это приведет к удалению всех файлов .bak старше 20 дней.

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

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

    find . -type d -name dir22 -exec rm -rf {} ;

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

    find . -type d -iname Dir22 -exec rm -rf {} ;

    Удаляет как Dir22, так и dir22

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

    find . -type d -iname Dir22 -exec rm -rf -i {} ;

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

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

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

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

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

    или же
    найти ./ -тип f -размер 0 | xargs rm -f
    или же
    найти ./ -тип f -размер 0 –удалить

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

    Чтобы удалить пустые каталоги, мы будем использовать параметр d.

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

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

    find ./ -type d -empty -delete

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

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

    Что дальше?

    Идите вперед и попробуйте приведенные выше команды поиска Linux в своей лаборатории или НЕПРОИЗВОДСТВЕННОЙ среде. Посмотрите, можете ли вы использовать некоторые из них для автоматизации очистки файловой системы с помощью Crontab. И, чтобы освоить Linux, проверьте это онлайн курс.

    FOUND.000 - что за папка?
    FOUND.000 — что за папка?

    Случается, что нежданно-негаданно, на жестком диске или флешке появляется скрытая системная папка с названием FOUND.000, в ней файлы с расширением CHK. Некоторые пользователи сразу думают, что это является признаком заражения компьютера вирусами. На самом деле, появление папки FOUND.000 связано с работой системной утилиты CHKDSK — эта программа входит в состав операционной системы Windows и предназначена для проверки и исправления ошибок на жестких дисках и флешках. Согласно интернет-источникам, CHKDSK содержит ошибку как минимум в Windows 2000, Windows XP Home (SP3), Windows 2003 Server, Windows Vista (SP1).

    Программа CHKDSK, обычно запускается в автоматическом режиме после внезапной перезагрузки компьютера. Такая перезагрузка вполне может произойти, если компьютер не оборудован бесперебойным источником питания. После внезапной перезагрузки ПК, может нарушится файловая структура операционной системы — CHKDSK проверяет файловую структуру и пытается восстановить файлы и папки если они повреждены. Подвох заключается в том, что алгоритм работы утилиты не идеален и она способна «наломать дров». Ситуация усугубляется тем, что программа может вносить некорректные изменения в файловую структуру, не делая при этом никаких резервных копий, т.е. отменить действия уже нельзя.

    При самом негативном сценарии, ценные файлы могут быть безвозвратно удалены с диска. В лучшем случае, CHKDSK сохранит данные в скрытую папку FOUND.000 (.001, .002 и т.д.), а сами файлы примут вид типа: FILE0000.CHK, FILE0001.CHK и т.д. К счастью, как правило, содержимое файлов не повреждается и удается добраться до их содержимого.

    Поскольку папка FOUND.000 является не только скрытой, но и системной, она не будет отображаться стандартными средствами Windows, даже если включить отображение скрытых файлов и папок.   Увидеть её можно при помощи файлового менеджера Total Commander, если в его настройках (Конфигурация — Настройки — Содержимое полей) выставлены галочки «Показывать скрытые файлы» и «Показывать системные файлы».

    Настройка Total Commander "Показывать скрытые файлы" и "Показывать системные файлы"

    В конкретном случае, в корневом каталоге флешки, только папка FOUND.000 и файл AUTORUN.INF.

    В корневом каталоге флешки только папка FOUND.000 и файл AUTORUN.INF

    В папке FOUND.000 все файлы имеют расширение CHK.

    В папке FOUND.000 все файлы имеют расширение CHK

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

    Как восстановить файлы из FOUND.000?

    К сожалению, Windows не в состоянии самостоятельно определить содержимое файлов CHK (ОС Ubuntu, большую часть таких файлов открывает без проблем). По этой причине, у файлов надо менять расширение, чтобы Windows знала, при помощи каких программ их открывать. Если в файле хранится фотография, то тогда расширение файла должно быть JPG. Если на флешке хранились только фотографии, тогда можно поменять расширение с CHK на JPG сразу у всех файлов средствами Total Commander. Если же на диске хранилось большое количество файлов разного типа, то проще воспользоваться программами, которые сами распознают какая информация хранится в файле и соответствующим образом изменят расширение.

    Одной из таких программ является unCHKfree (скачать 35 Кб). У программы русский интерфейс, она не требует установки на компьютер и проста в работе. Достаточно выполнить три шага:

    1. Указать путь к папке с файлами CHK;
    2. Выбрать способ восстановления: «Восстановить файлы в этой же папке» или «Восстановить файлы разложить их по папкам с расширениями»;
    3. Нажать на кнопку «Старт».

    Внимание! Программа unCHKfree не видит папку FOUND.000, так как она скрытая и системная. По этой причине, файлы CHK лучше загрузить на любой локальный диск в специально созданную папку.

    Программа для восстановления файлов из папки found.000

    Программа unCHKfree специально предназначена для восстановления информация из файлов с расширением CHK

    unCHKfree без проблем распознала файлы с фотографиями и изменила у них расширение на JPG. Программа не смогла распознать около 3% процентов файлов — расширение у них не изменилось и осталось CHK.  Файлы с презентациями PowerPoint, были распознаны как вордовские документы (с расширением DOC).

    Красной рамкой обведен файл, содержимое которого программа не смогла определить. Зелёной рамкой выделен файл с презентацией PowerPoint, распознанный программой как документ Word

    Красной рамкой обведен файл, содержимое которого программа не смогла определить. Зелёной рамкой выделен файл с презентацией PowerPoint, распознанный программой как документ Word

    Расширения неправильно распознанных файлов можно изменить «вручную» средствами Total Commander, т.е. у файлов с презентациями изменить расширение на PPT.

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


    Команда find — это одна из самых полезных и важных команд на Linux.
    Она по умолчанию установлена и доступна практически на всех версиях Linux. В Linux все хранится в виде файлов, и очевидно стоит знать, как эти файлы искать.

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

    1)Выведите списки всех файлов текущей директории и ее подкаталогов

    Для того чтобы вывести списки всех файлов текущей директории и ее подкаталогов, мы можем использовать:

    $ find
    
    

    В качестве альтернативы, мы можем также использовать ‘find . ’, которая выдаст вам тот же результат.

    2)Найдите все файлы и директории в вашей текущей рабочей директории

    Если нужно найти только директории, то можно использовать:

    $ find . -type d
    
    

    Чтобы найти только файлы, а не директории:

    $ find . -type f
    

    3)Выведите список всех файлов определенной директории

    Для того чтобы найти файлы из определенной директории надо ввести:

    $ find /root
    
    

    This command will look for all the files in /root directory.

    4)Найдите файл по имени в директории

    Для поиска файла по имени в определенной директории введите:

    $ find /root -name "linuxtechi.txt"
    
    

    Эта команда будет искать файл linuxtechi.txt в директории /root. Так же мы найти все файлы с расширением .txt:

    $ find /root -name "*.txt"
    
    

    5)Найдите файл во множестве директорий

    Для поиска файлов во множестве директорий введите:

    $ find /root /etc -name "linuxtechi.txt"
    
    

    With this command, we can look for linuxtechi.txt file in /root & /etc directories.

    С помощью этой команды мы можем найти файл linuxtechi.txt в директориях /root и /etc.

    6)Найдите файл по имени без учета регистра

    Ищите файлы без учета регистра с помощью -iname:

    $ find /root -iname "Linuxtechi.txt"
    
    

    В результате вы получите все файлы с названием linuxtechi.txt. При этом файлов может быть несколько, так как linuxtechi.txt будет равняться LINUXTECHI.txt .

    7)Найдите все типы файлов отличные от упомянутого

    Давайте предположим, что нам необходимо найти все файлы отличные от определенного типа файлов. Чтобы этого добиться вводим:

    $ find /root -not -name "*.txt"
    
    

    8)Найдите файлы по множеству признаков

    Мы можем совмещать более чем одно условие при поиске файлов. Предположим, что нам нужны файлы с расширениями .txt и .html:

    $ find . -regex ".*.(txt|html)$"
    
    

    9)Найдите файлы с использованием условия OR

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

    $ find -name "*.txt" -o -name "linuxtechi*"
    
    

    10)Поиск файлов на основе разрешений

    Чтобы найти файлы с определенным доступом используйте -perm:

    $ find /root -type f -perm 0777
    
    

    11)Найдите все скрытые файлы

    Для поиска скрытых файлов в директории введите:

    $ find  ~ -type f name ".*"
    
    

    12)Найдите все файлы со SGID

    Для поиска файлов с битами SGID исполните команду:

    $ find . -perm /g=s
    
    

    13) Найдите все файлы со SUID

    Для поиска файлов с битами SUID используем:

    $ find . -perm /u=s
    
    

    14)Найдите все исполняемые файлы

    Для поиска только исполняемых файлов введите:

    $ find . -perm /a=x
    
    

    15)Найдите файлы с доступом только для чтения

    К тому же, с помощью команды find можно найти файлы, доступные только для чтения:

    $ find /root -perm /u=r
    
    

    16)Найдите все файлы пользователя

    Для поиска файлов определенного пользователя надо использовать следующую команду:

    $ find . -user linuxtechi
    
    

    17)Найдите все файлы группы

    Для поиска файлов определенной группы используем:

    $ find . -group apache
    
    

    18)Найдите все файлы определенного размера

    Если мы хотим искать, размер которого нам известен, тогда можно использовать -size:

    $ find / -size -2M
    
    

    19)Найдите все файлы в диапазоне размеров

    Если мы ищем файл, размер которого нам не известен, но зато мы знаем примерный его размер, или нам просто сделать выборку файлов в определенном диапазоне размеров, то можно ввести:

    $ find / -size +2M -size -5M
    
    

    Можно использовать команд find при поиске файлов тяжелее, чем, например, 50 mb:

    $ find / -size +50M
    
    

    20)Найдите файлы, измененные N дней назад

    For example, we want to locate all the files that have been modified 8 days ago. We can accomplish that using ‘-mtime‘ option in find command

    Например, мы можем обнаружить найти все файлы отредактированные 8 дней назад. Делается это с помощью команды -mtime:

    $ find / -mtime 8
    
    

    21)Найдите файлы, в которые заходили N дней назад

    Можно найти файлы, в которые входили 8 дней назад с помощью -atime:

    $ find / -atime 8
    
    

    22)Найдите все пустые файлы и директории

    Для нахождения всех пустых файлов в системе введем:

    $ find / -type f -empty
    
    

    А чтобы вывести их директории:

    $ find ~/ -type d -empty
    
    

    23)Найдите самый большой и самый маленький файлы

    Для вывода списка самых больших или самых маленьких файлов используем find в связке с sort, и, если нам понадобится вывести 3 «самых-самых», то используем еще head.

    Для вывода трех файлов из текущей директории введем:

    $ find . -type f -exec ls -s {} ; | sort -n -r | head -3
    
    

    Схожим образом мы можем вывести самые маленькие файлы текущей директории:

    $ find . -type f -exec ls -s {} ; | sort -n | head -3
    
    

    24)Найдите все файлы с определенным доступом и сменить его на 644 (или еще на что-нибудь)

    Команда find может предложить продвинутые варианты использования. К примеру, мы может изменить все разрешения 644 определенных файлов на 777. Для этого исполняем:

    $ find / -type f -perm 644 -print -exec chmod 777 {} ;
    
    

    25)Найдите все файлы, подходящие по определенным критериям, и удалите их

    Рано или поздно может понадобиться удалить те или иные файлы. Если так произошло, то вводим:

    $ find / -type f -name 'linuxtechi.*' -exec rm -f {} ;
    
    

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

    Понравилась статья? Поделить с друзьями:
  • Как найти хорошего мусульманина
  • Как найти главное предложение в рассказе
  • Как найти площадь грани a1a2a3
  • Как найти разность подобных одночленов
  • Самоанализ урока как найти