Бывает, что вы знаете, что файл или каталог существует, но не знаете, как его найти. Существует несколько команд, которые помогут вам в этом: find , locate и which .
4.10.1. Команда find
Команда find имеет следующий формат:
Find путь образец_для_поиска
Если вы не укажете путь, find начнет поиск заданного образца с текущего каталога и продолжит его по всем имеющимся в нем подкаталогам.
Команда find имеет множество опций, ознакомиться с которыми можно, прочитав man-страницу (введите в командной строке man find). Чаще всего используется опция -name , которая задает поиск всех файлов и каталогов, содержащих в названии определенное сочетание букв.
Find . -name tes
Эта команда задает поиск в текущем каталоге всех файлов, содержащих в названии «tes ».
4.10.2. Команда locate
С помощью этой команды вы можете увидеть все файлы или каталоги, названия которых содержат искомый образец. Например, для поиска файла, содержащего в названии слово dog , введите в командной строке:
Locate dog
Команда locate использует базу данных для определения местонахождения файлов или каталогов, содержащих в названии слово dog . Результаты поиска могут включать файл с названием dog , файл с названием bulldog.txt , каталог с названием /dogs/ и так далее. Чтобы узнать больше о команде locate , обратитесь к ее man-странице (введите в командной строке man locate).
При условии, что база данных обновлена, команда locate осуществляет поиск очень быстро. Обновление базы данных команды locate происходит каждую ночь при помощи службы cron .
cron - это небольшая программа, которая запускается в фоновом режиме и выполняет различные задачи (такие как обновление базы данных команды locate) через определенные промежутки времени. Для доступа к руководству cron наберите в командной строке man cron .
cron периодически обновляет базу данных slocate , которая используется для определения местонахождения файлов или каталогов. Переключение между операционными системами и отключение машины в конце дня препятствует автоматическому обновлению базы данных при помощи cron .
Чтобы обновить базу данных вручную, войдите в систему как root (набрав в командной строке su - и введя пароль root"а) и наберите в командной строке updatedb .
Через некоторое время база данных slocate , используемая командой locate , обновится.
Закончив работу, для выполнения которой необходимо быть root"ом, наберите в командной строке exit - вы вернетесь в вашу сессию.
Привет всему сообществу Хабра.
Это мой первый пост и, надеюсь, не последний. Поэтому неизбежны всяческие недочеты, баги и некоторая водянистость текста, так что прошу строго не судить:)
К написанию этого поста меня сподвиг топик «Консоль для новичка.» , где ISVir поднял острую, на мой взгляд, тему - как доступным языком рассказать новичкам о консоли, не отпугнув их мнимой сверх-сложностью.
Не собираюсь отбирать у ISVir паритет, лишь расскажу о практическом использовании нескольких самых основных утилит «на каждый день», без которых работа в консоли для меня невозможна.
Итак, что мы имеем:
find - поиск файлов. позволяет искать файлы, каталоги, симлинки и другие файловые объекты. find Позволяет задать множество опций поиска таких как:
- поиск по маске (в имени)
- контроль глубины вложенности поиска
- поиск определенных типов файлов(каталог, симлинки, сокеты)
- поиск по времени создания/модификации файла
- можно задать размер (от и до в диапазоне) файла
- выполнение действий с каждым найденным файлом
Итак, с места в карьер - поиск всех файлов в каталоге /etc/, измененных за последние сутки:
$find /etc/ -type f -mtime -1
разберем, что мы написали:
Первым параметром всегда указывается начальный каталог для поиска.
опция -type
с параметром f
говорит find
, что нужно искать только обыкновенные файлы.
опция -mtime
с параметром -1
указывает find
, что нужно найти файлы, изменившиеся за последние сутки.
"-"
перед 1
задает верхнюю границу диапазона, т.е. «все, что изменилось за последние 24 часа»
Если бы мы указали "+"
перед 1
, то find
нашел бы всех файлы, изменившиеся от 01.01.1970 до вчерашнего дня (более суток назад)
так же можно указать точную дату поставив число без модификатора.
Выполнение действий с найденными файлами.
опция -exec
принимает строку с командой, которая будет выполнятся для каждого найденного файла
параметр передающийся команде обозначается через {}
строка должна заканчиваться символами " \; "
Рассмотрим пример:
* найти в каталоге /tmp все файлы, изменившиеся за последний месяц и скопировать их в каталог
/tmp/backup/
$find /tmp -type f -mtime -30 -exec cp {} /tmp/backup \;
* удалить все каталоги(рекурсивно) с именем logs, изменившиеся за последний день в каталоге
/var/www
$find /var/www -type d -mtime 0 -name logs -exec sudo rm -fr {} \;
параметр d в опции -type указывает на поиск только каталогов
опция -name задает поиск по имени.
здесь стоит добавить, что удалять таким образом файлы не оптимально(медленно).
для удаления у find есть встроенная опция -delete, которая отрабатывает на порядок быстрее.
Рассмотрим утилиту awk
.
awk
- это язык программирования, предназначенный для обработки файлов. Цель его
разработки - облегчить постановку и решение многих задач, связанных с переработкой текстовой информации. По сути, awk
- это утилита, доступная из консоли.
Я по понятным причинам не буду здесь рассматривать приемы написания awk кода - расскажу только про один важный для нас прием.
Во первых, awk может получать данные из STDIN: $echo «test»|awk ...
во вторых, awk эффективен при написании однострочников в консоли, т.к. выполняет код, данные ему как параметр:
awk разделяет входной поток на поля и помещает эти поля в переменные вида $1,$2,..$N
по умолчанию, разделитель полей - пробел, но с помощью опции -F"_разделитель_" это можно переопределить:
$head -4 /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh$cat /etc/passwd|awk -F":" "{print $1}"
root
daemon
binНапример, у нас в каталоге /var/www есть несколько сайтов. для каждого сайта существует каталог logs, куда пишутся логи апача (для этого сайта).и вот мы хотим узнать суммарный обьем этих логов, а так же найти все логи больше 100Mb.
1.поиск больших логов:$find /var/www -type f -name «access.log*» -size +100M
/var/www/site1/logs/access.log
/var/www/site2/logs/access.log.1.gz2.подсчитаем суммарный обьем логов:
Find /var/www/ -type f -name «access.log*» -exec du -k {} \;|awk "{s+=$1}END{print s}"
5071604
так, не пугаться - щас все обьясню:)Find ищет все файлы по маске (access.log*) и для каждого запускает команду du .
команда du печатает размер файла. опция -k делает вывод в килобайтах.
дальше запускается процессор awk , просто суммирует первое поле строк (числа) в переменную s и выводит значение переменной на экран.Еще примерчик: найдем в системе все файлы и каталоги принадлежищие юзеру test1 и подсчитаем суммарный обьем.
#find / -user test1 -exec du -sm {} \;|awk "{s+=$1}END{print s}"
т.е. здесь с помощью опции -user find ищет файлы, принадлежашие юзеру test1 и для каждого файла/каталога подсчитываем его размер (команда du)
дальше через конвеер эти данные принимает awk и, как мы делали выше, считает их сумму в Kb.Ок. думаю, на сегодня хватит.
пост вышел довольно большим, видимо с непривычки:)Сразу хочу сказать - я не ставил цель просто рассказать об использовании find и awk, а привести примеры именно практического применения в реальных ситуациях.
если статья понравится - продолжу писать в данном направлении.Спасибо, что уделили время.
Команда find - это одна из самых полезных и важных команд на Linux.
Она по умолчанию установлена и доступна практически на всех версиях Linux. В Linux все хранится в виде файлов, и очевидно стоит знать, как эти файлы искать.
С помощью команды find можно искать интересующие файлы по ряду поисковых критериев. Критерии можно указывать как вместе, так и по отдельности, а затем уже совершать действия с полученном результатом. В этом руководстве мы собираемся описать команду find с помощью примеров использования.
1)Выведите списки всех файлов текущей директории и ее подкаталогов
Для того чтобы вывести списки всех файлов текущей директории и ее подкаталогов, мы можем использовать:
В качестве альтернативы, мы можем также использовать ‘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 , которая способна существенно упростить задачу поиска файлов.
Начиная работу с сервером Linux, пользователи часто сталкиваются с проблемой поиска необходимых файлов.
Данное руководство рассматривает использование соответствующей команды find, которая позволяет искать файлы при помощи различных фильтров и параметров. Кроме того, это руководство вкратце охватывает команду locate, которую можно быть использовать для поиска команд.
Поиск по имени файла
Конечно, поиск файла по имени – самый очевидный способ найти нужный файл.
Для этого используйте:
find -name "query"
Данная команда чувствительна к регистру (то есть, она воспринимает файлы с именем file и File как два разных файла).
Чтобы найти файл по имени без учета регистра, наберите:
find -iname "query"
Чтобы найти файлы, которые не совпадают с определенным шаблоном, нужно инвертировать поиск при помощи флагов -not или метасимвола «!». Обратите внимание, при использовании «!» нужно избегать символов, чтобы оболочка bash не интерпретировала «!» еще до выполнения команды find.
find -not -name "query_to_avoid"
find \! -name "query_to_avoid"
Поиск по типу файла
При помощи параметра «-type» можно указать тип необходимого файла. Это работает так:
find -type type_descriptor query
Вот список общих дескрипторов, при помощи которых можно указать тип файла:
- f : обычный файл;
- d : каталог;
- l : символическая ссылка;
- c : символьные устройства;
- b : блочные устройства.
К примеру, чтобы найти в системе все символьные устройства, нужно выполнить команду:
find / -type c
/dev/parport0
/dev/snd/seq
/dev/snd/timer
/dev/autofs
/dev/cpu/microcode
/dev/vcsa7
/dev/vcs7
/dev/vcsa6
/dev/vcs6
/dev/vcsa5
/dev/vcs5
/dev/vcsa4
. . .
Чтобы найти все файлы, которые заканчиваются на.conf, используйте:
find / -type f -name "*.conf"
/var/lib/ucf/cache/:etc:rsyslog.d:50-default.conf
/usr/share/base-files/nsswitch.conf
/usr/share/initramfs-tools/event-driven/upstart-jobs/mountall.conf
/usr/share/rsyslog/50-default.conf
/usr/share/adduser/adduser.conf
/usr/share/davfs2/davfs2.conf
/usr/share/debconf/debconf.conf
/usr/share/doc/apt-utils/examples/apt-ftparchive.conf
. . .
Фильтрация по времени и размеру
Команда find позволяет фильтровать полученный результат, руководствуясь размером и временем последнего изменения.
Размер файла
Чтобы отфильтровать файлы по размеру, используйте параметр -size.
Также нужно внести суффикс в конце значения, чтобы указать размер:
- c: байт
- k: килобайт
- M: мегабайт
- G: гигабайт
- b: блоки по 512 байт
Чтобы найти файлы размером ровно в 50 байт, наберите:
find / -size 50c
Чтобы найти файлы, размер которых меньше 50 байт, используйте символ «-» перед значением:
find / -size -50c
Соответственно, чтобы найти файлы, размер которых превышает 700 мегабайт, используйте перед значением символ +; команда имеет такой вид:
find / -size +700M
Поиск в зависимости от времени
Linux хранит данные о access time, modification time и change time.
- access time: время последнего обращения к файлу (когда файл был прочитан или дописан);
- modification time: время последнего изменения содержимого файла;
- change time: время последнего изменения инода (inode) файла.
Для фильтрации файлов по времени используйте параметры «-atime», «-mtime» и «-ctime» соответственно.
Значение данного параметра указывает, сколько дней назад был изменен файл. Как и в случае с размером файла, можно использовать символы – и +, чтобы получить файлы, измененные меньше чем или больше чем n дней назад.
То есть, чтобы найти файл, содержимое которого было изменено 1 день назад, используйте:
Чтобы вывести файлы, к которым обращались меньше 1 дня назад, используйте:
find / -atime -1
Чтобы найти файлы, иноды которых были изменены более трех дней назад, введите:
find / -ctime +3
Существуют также сопутствующие параметры, с помощью которых можно указать минуты вместо дней:
Это вернет файлы, содержание которых было изменено минуту назад.
Кроме того, команда find может сравнивать файлы и выводить более новые из них:
find / -newer myfile
Поиск по владельцу и привилегиям
С помощью команды find файлы можно искать по владельцу или правам на файл.
Для того используются параметры –user, –group, и -perm соответственно. Например, чтобы найти файл, принадлежащий пользователю с именем syslog, наберите:
find / -user syslog
Аналогично, чтобы вывести файлы, принадлежащие группе shadow, используйте:
find / -group shadow
Также можно искать файлы с особыми привилегиями.
Чтобы найти файл с определенными правами, используйте:
find / -perm 644
Данная строка выведет все файлы с такими правами.
Чтобы вывести все файлы, привилегии которых больше или равны указанным, используйте синтаксис:
find / -perm -644
Это вернет все файлы с дополнительными привилегиями (например, файл с привилегиями 744).
Фильтрация файлов по глубине
Чтобы выполнить примеры данного раздела, создайте во временном каталоге структуру каталогов. Она должна состоять из трех уровней каталогов, с десятью каталогами на первом уровне. Каждый каталог (в том числе тестовый каталог) должен содержать десять файлов и десять подкаталогов.
Чтобы создать такую структуру, выполните следующую команду:
cd
mkdir -p ~/test/level1dir{1..10}/level2dir{1..10}/level3dir{1..10}
touch ~/test/{file{1..10},level1dir{1..10}/{file{1..10},level2dir{1..10}/{file{1..10},level3dir{1..10}/file{1..10}}}}
cd ~/test
Чтобы ознакомиться с только что созданной структурой и проверить, все ли создано правильно, используйте команды ls и cd. Затем вернитесь в тестовый каталог test:
Данный раздел покажет, как извлекать определенные каталоги из этой структуры. Для начала попробуйте выполнить простой поиск файла по имени:
find -name file1
./level1dir7/level2dir8/level3dir6/file1
./level1dir7/level2dir8/level3dir5/file1
. . .
Эта команда вывела достаточно объемный результат. Передав этот результат в счетчик, можно увидеть, что в итоге выведено 1111 файлов.
find -name file1 | wc -l
1111
Конечно, в большинстве случаев этот вывод слишком объемный и неудобный. Попробуйте сузить его.
Для этого можно использовать параметр –maxdepth, чтобы задать максимальную глубину поиска:
find -maxdepth num -name query
Чтобы найти file1 в каталогах level1 и выше, укажите максимальную глубину 2 (1 для каталога верхнего уровня и 1 для каталогов level1).
find -maxdepth 2 -name file1
./level1dir7/file1
./level1dir1/file1
./level1dir3/file1
./level1dir8/file1
./level1dir6/file1
./file1
./level1dir2/file1
./level1dir9/file1
./level1dir4/file1
./level1dir5/file1
./level1dir10/file1
Как видите, данный результат имеет гораздо более удобный вид.
Кроме того, можно указать минимальную глубину поиска:
find -mindepth num -name query
Это используется для поиска файлов, которые находятся в конце ветвей каталога:
find -mindepth 4 -name file
./level1dir7/level2dir8/level3dir9/file1
./level1dir7/level2dir8/level3dir3/file1
./level1dir7/level2dir8/level3dir4/file1
./level1dir7/level2dir8/level3dir1/file1
./level1dir7/level2dir8/level3dir8/file1
./level1dir7/level2dir8/level3dir7/file1
./level1dir7/level2dir8/level3dir2/file1
. . .
Опять же, данный результат будет содержать огромное количество файлов (1000).
Максимальную и минимальную глубину поиска можно комбинировать, чтобы уменьшить диапазон поиска:
find -mindepth 2 -maxdepth 3 -name file
./level1dir7/level2dir8/file1
./level1dir7/level2dir5/file1
./level1dir7/level2dir7/file1
./level1dir7/level2dir2/file1
./level1dir7/level2dir10/file1
./level1dir7/level2dir6/file1
./level1dir7/level2dir3/file1
./level1dir7/level2dir4/file1
./level1dir7/file1
. . .
Выполнение и объединение команд
Утилита find позволяет выполнять любую вспомогательную команду на все найденные файлы; для этого используется параметр –exec. Базовый синтаксис выглядит так:
find параметры_поиска -exec команда_и_параметры {} \;
Символы {} используются в качестве заполнителя для найденных файлов. Символы \; используются для того, чтобы find могла определить, где заканчивается команда.
Для примера можно найти файлы с привилегиями 644 (как в предыдущем разделе) и изменить их привилегии на 664:
cd ~/test
find . -perm 644 -exec chmod 664 {} \;
Затем можно сменить привилегии каталога:
find . -perm 755 -exec chmod 700 {} \;
Чтобы связать несколько результатов, используйте команды -and или -or. Команда –and предполагается, если она опущена.
find . -name file1 -or -name file9
Поиск файлов с помощью команды locate
Команда locate является альтернативой для find. Данная команда, как правило, работает быстрее и может легко производить поиск по всей файловой системы.
Установить эту команду можно при помощи с apt-get:
sudo apt-get update
sudo apt-get install mlocate
Но почему команда locate быстрее, чем find? Дело в том, что locate зависит от базы данных файлов в файловой системе.
Как правило, cron-скрипт обновляет эту базу данных раз в день; но ее можно обновить и вручную. Запустите эту команду:
Запомните: БД нужно регулярно обновлять, чтобы она содержала актуальные данные; в противном случае найти недавно полученные или созданные файлы будет невозможно.
Чтобы найти файлы с помощью команды locate, просто используйте следующий синтаксис:
Полученный результат также можно фильтровать.
К примеру, чтобы возвращать только файлы, содержащие сам запрос, вместо того чтобы выводить каждый файл, который содержит запрос в ведущих к нему каталогах, можно использовать флаг –b (чтоб искать только basename, базовое имя файла):
Чтобы команда locate возвращала только файлы, которые все еще существуют в файловой системе (то есть, файлы, которые не были удалены в промежутке между последним запуском updated и текущим вызовом locate), используйте флаг –е:
Чтобы просмотреть статистику, занесенную командой locate в каталог, используйте опцию –S:
locate -S
Database /var/lib/mlocate/mlocate.db:
3,315 directories
37,228 files
1,504,439 bytes in file names
594,851 bytes used to store database
Итоги
Команды find и locate – отличные инструменты для поиска файлов в UNIX‐подобных операционных системах. Каждая из этих утилит имеет свои преимущества.
Несмотря на то, что команды find и locate сами по себе очень мощны, их действие можно расширить, комбинируя их с другими командами. Научившись работать с find и locate, попробуйте фильтровать их результаты при помощи команд wc, sort и grep.
Tags: ,- Введите -iname вместо -name , чтобы проигнорировать регистр в веденном имени файла. Команда -name учитывает регистр.
-
Начните поиск в корневом каталоге. Чтобы запустить поиск по всей системе, к запросу добавьте модификатор / . В этом случае команда find будет искать файл во всех каталогах, начиная с корневого.
find / -iname "имя файла"
- Можно начать поиск в определенном каталоге; для этого замените / на путь к каталогу, например, /home/max .
- Можно использовать. вместо / , чтобы искать файл только в текущем каталоге и его подкаталогах.
-
Используйте символ обобщения . * , чтобы найти файлы, имя которого соответствует части запроса. При помощи символа обобщения * можно найти файл, полное имя которого неизвестно, или найти все файлы с определенным расширением.
find /home/max -iname "*.conf"
- Эта команда найдет все файлы с расширением.conf в папке пользователя Max (и ее подпапках).
- Воспользуйтесь этой командой, чтобы найти все файл, имена которых соответствуют части запроса. Например, если на компьютере хранится множество файлов, связанных с WikiHow, найдите все файлы, введя "*wiki*" .
-
Облегчите управление результатами поиска. Если результатов поиска слишком много, среди них сложно найти нужный файл. Используйте символ | , чтобы результаты поиска фильтровались командой less. Это облегчит просмотр и фильтрование результатов поиска.
find /home/max -iname "*.conf" | less
Найдите конкретные элементы. Используйте модификаторы, чтобы в результатах поиска отобразить только определенные элементы. Можно искать обычные файлы (f), каталоги (d), символьные ссылки (l), устройства посимвольного ввода-вывода (с) и блочные устройства (b).
find / -type f -iname "имя файла"
-
Отфильтруйте результаты поиска по размеру файлов. Если на компьютере хранится множество файлов с похожими именами, но размер искомого файла известен, отфильтруйте результаты поиска по размеру файлов.
find / -size +50M -iname "имя файла"
- Эта команда найдет все файлы, размер которых превышает 50 МБ. Используйте модификатор + или - , чтобы указать на увеличение или уменьшение размера. Если модификатора + или - нет, команда найдет файлы, размер которых точно совпадает с указанным размером.
- Результаты поиска можно отфильтровать по байтам (c), килобайтам (k), мегабайтам (M), гигабайтам (G) или блокам по 512 байт (b). Обратите внимание, что приведенные модификаторы учитывают регистр.
-
Используйте логические операторы (булевы операторы), чтобы объединить поисковые фильтры. Можно использовать операторы -and , -or , -not , чтобы объединить различные поисковые запросы в один запрос.
find /travelphotos -type f -size +200k -not -iname "*2015*"
- Эта команда найдет файлы в папке «Travelphotos», размер которых больше 200 кБ и в именах которых нет числа 2015.
Найдите файл по его имени. Такой простейший поиск выполняется при помощи утилиты find . Приведенная ниже команда будет искать файл в текущем каталоге и во всех его подкаталогах.
find -iname "имя файла"