Найдите файл по его имени. Такой простейший поиск выполняется при помощи утилиты find . Приведенная ниже команда будет искать файл в текущем каталоге и во всех его подкаталогах.
find -iname "имя файла"
Начните поиск в корневом каталоге. Чтобы запустить поиск по всей системе, к запросу добавьте модификатор / . В этом случае команда find будет искать файл во всех каталогах, начиная с корневого.
find / -iname "имя файла"
Используйте символ обобщения . * , чтобы найти файлы, имя которого соответствует части запроса. При помощи символа обобщения * можно найти файл, полное имя которого неизвестно, или найти все файлы с определенным расширением.
find /home/max -iname "*.conf"
Облегчите управление результатами поиска. Если результатов поиска слишком много, среди них сложно найти нужный файл. Используйте символ | , чтобы результаты поиска фильтровались командой less. Это облегчит просмотр и фильтрование результатов поиска.
find /home/max -iname "*.conf" | less
Найдите конкретные элементы. Используйте модификаторы, чтобы в результатах поиска отобразить только определенные элементы. Можно искать обычные файлы (f), каталоги (d), символьные ссылки (l), устройства посимвольного ввода-вывода (с) и блочные устройства (b).
find / -type f -iname "имя файла"
Отфильтруйте результаты поиска по размеру файлов. Если на компьютере хранится множество файлов с похожими именами, но размер искомого файла известен, отфильтруйте результаты поиска по размеру файлов.
find / -size +50M -iname "имя файла"
Используйте логические операторы (булевы операторы), чтобы объединить поисковые фильтры. Можно использовать операторы -and , -or , -not , чтобы объединить различные поисковые запросы в один запрос.
find /travelphotos -type f -size +200k -not -iname "*2015*"
Возможно, вам известна такая проблема как: Не можете найти файл, а он где то в компьютере. Тогда удобна команда find.
Вы спросите: Как ею пользоваться? К этой программе дается огромная man-страница, мы рассмотрим некоторые обычные случаи.
Можно начать с самого простого: Если вы знаете имя файла, то вы сможете легко его найти! Вам всего лишь нужно набрать команду find и указать конкретное имя файла!
Find -name love
Если существует файл с именем «love» то команда find выявит местоположение файла или нескольких файлов таким образом:
Jzb@kodos:~$ find -name love
./projects/love
jzb@kodos:~$
Например, будем искать все файлы в формате mp3 и сделаем полный список в файле:
File /home/artix -iname ".mp3" > ./list.txt
File /home/artix -iname ".txt" -exec grep -H "LEON" "{}" \; > ./list.txt
Замечательно, у нас уже получается осуществлять поиск файлов Linux со словом
«LEON». Таким же образом можно удалить лишнее, причем в фоне, чтобы можно было дальше работать:
File /home/artix -iname ".bak" -exec rm "{}" \; &
Этим мы облегчаем себе жизнь. Эти наипростейшие вещи, а в них так много полезного.
Поиск файлов по дате Linux
Find ./ -mmin -10 #дата модификации менее 10 минут find ./ -mtime +1 #дата модификации более суток find ./ -type f -atime +10 # время обращения более 10 дней find ./ -type f -amin -10 #дата модификации последние 10 минут
# find /var/named/ -type f -exec grep "MX" {} \;
serversnetwork.info. 14400 IN MX 10 mail
и еще один:
# grep -rl "MX" /var/named/ /var/named/serversnetwork.info.db
Find -size 95k.
Так мы найдем файлы размером 95k. Но этой опцией пользуются очень редко. Больше используют команды, с помощью которых можно найти файл больше или меньше указанного размера. К примеру, опция:
Find -size +150k
Должна показать файлы которые больше 150k. А опция
Find -size -94k
то, что меньше 94K.
Функция -size производит поиск файлов указанного размера и имеет вот этот вид при выполнении:
$ find . -size 3500k -print
Эта опция осуществит в Linux поиск файлов и выявит на экране
те, у которых размер 3500 килобайт, которые находятся в этой папке. Если вам потребуется отыскать файлы, в которых размер меньше 250 килобайт, то команда будет выглядеть следующей:
$ find . -size -200k -print
Если требуется отыскать файлы в которых размер больше 555 мегабайт, то мы будем использовать опцию:
$ find / -size +555M -print
Пожалуй, на этом я закончу писать свою статью.
Теперь вы возможно сможете сами искать файлы, осуществлять поиск текста в файлах Linux, искать файлы по дате!
Всем спасибо, пока!
Сегодня мы рассмотрим нескольно наиболее популярных способов поиска файлов в Linux, используя терминал.
1) find: Для поиска файлов из командной строки вы можете использовать команду “find”. У этой команды следующий синтаксис:
find path criteria action
“path” - Секция для указания директории поиска. Если ничего не указано поиск идет по текущей директории.
“criteria” - Опции поиска.
“action” - Опции, которые влияют на состояние поиска или контролируют его, например,
2) locate: Команда “locate” это альтернатива команде “find -name”. Команда find ищет файлы в выбранной части файловой системы и процесс может быть не очень быстрым. С другой стороны, команда locate ищет файлы в базе данный, созданной специально для этих целей /var/lib/locatedb, что происходит намного быстрее. Для обновления базы используется команда updatedb .
3) whereis: “whereis” возвращает место расположения кода (опция -b), ман-страниц (опция -m), и исходные файлы (опция -s) для указанной команды. Если опции не указываются, выводится вся доступная информация. Эта команда быстрее чем “find” но менее полная.
4) which: Команда “which” ищет все пути перечисленные в переменной PATH для указанной команды.
5) type:
При вызове без опций показывает, как имена будут интерпретироваться
при использовании в качестве имени команды. Если использована опция -a , команда type выдает список всех каталогов, где есть выполняемый файл с
соответствующим именем. В список включаются также псевдонимы и функции,
если только не указана опция -p . К
хэшу команд не обращаются, если указана опция -a . Команда type возвращает 0,
если хоть один из аргументов найден, и 1 в противном случае.
Постовой
Explo.ru - все про туризм и отдых: горящие туры и путевки в Турцию, Египет,
Необходимость поиска файлов может возникнуть практически в каждой операционной системе, которая позволяет работать с файловой системой. Классическим примером для нас послужит операционная система Linux, которую мы будем использовать в консольном режиме. Давайте рассмотрим возможности поиска файлов в системе посредством консоли. Для поиска файлов в системе Linux есть команда find, которая позволяет производить довольно гибкий поиск, позволяя задавать дополнительные критерии поиска. Рассмотрим возможности данной команды подробнее.
Синтаксис команды find:
Find путь –опции
В качестве пути указывается директория, в которой необходимо производить поиск. К примеру, это могут быть значения такого вида:
. – текущий каталог
/ — корневой каталог
~ — домашний каталог
После указания пути так указываются опции поиска. С виду всё запутано, но на самом деле сложностей тут нет.
Основные опции:
-name
- поиск по имени, задается шаблон поиска;
-user
- поиск файлов принадлежащих конкретному пользователю;
-group
- поиск файлов принадлежащих конкретной группе;
-perm
- поиск файлов по режиму доступа;
-type
- поиск файлов по типу, список типов:
-size n
- поиск файлов с размером n единиц;
-mtime -n +n
- поиск файлов по дате изменения, менее (-) или более (+) дней назад.
Попробуем произвести поиск файлов, имитируя различные ситуации.
Найдем файлы на съемном устройстве, подключенном к USB, и предварительно смонтированном в системе.
Поиск файлов по расширению:
$ find /mnt/usb -name "*.mp3" -print
В результате выполнения данной команды будет произведен поиск в каталоге /mnt/usb
– это каталог, в который смонтировано устройство. Поиск будет произведен по всем файлам (*), имеющим расширение .mp3
.
Маску поиска можно менять довольно гибко, к примеру, можно задать ключевое слово, с которого начинается имя файла, и произвести по нему поиск.
Поиск файлов по начальному ключевому слову:
$ find ~ -name "config*" –print
В результате будет показан список найденных файлов, начинающихся с ключевого слова config
.
Одна из сильных сторон команды это возможность поиска согласно регулярному выражению. Для демонстрации произведем поиск файлов, начинающихся с латинских букв от «a» до «j».
Поиск файлов по шаблону регулярного выражения:
$ find / -name "*" –print
Согласно указанному шаблону будет произведен поиск по всех файлов в системе, начинающихся с букв от «a» до «j».
Каждый более или менее знакомый с системами Linux знает, что режимы доступа к файлам дело весьма важное. Иногда бывает нужно найти файлы, имеющие конкретные заданные права, для этих целей можно воспользоваться поиском с опцией –perm .
Поиск файлов с режимом доступа 755:
$ find . -perm 775 –print
Таким же образом можно произвести более гибкий поиск. Давайте найдем файлы по группе пользователей, для которых есть полный доступ.
Поиск файлов с правами для группы:
$ find . -perm -070 –print
Знак дефиса может быть заменен на знак плюса, это позволит произвести поиск файлов, у которых установлен хотя бы один из заданных битов разрешений, остальные биты при этом будут проигнорированы.
В следующем примере рассмотрим поиск файлов принадлежащих определенному пользователю или группе.
Поиск файлов определенного пользователя:
$ find / -user admin –print
В результате поиска будет найдены файлы принадлежащие пользователю admin .
Поиск файлов, принадлежащие определенной группе пользователей:
$ find / -group bots –print
Будут найдены файлы, которые принадлежат группе пользователей bots . Кроме этого можно производить поиск файлов, владельцами которых являются несуществующие пользователи или группы:
$ find / -nouser –print $ find / -nogroup –print
Возможность поиска определенных типов файлов так же является немаловажным функционалом. К примеру, если есть необходимость найти все символические ссылки в конкретной директории.
Поиск символических ссылок:
$ find /etc -type l –print
Поиск будет произведен в директории /etc, в которой будут отбираться все символические ссылки.
Бывает необходимо просмотреть список вложенных директорий, в каком либо каталоге, для таких задач есть следующая команда.
Просмотр вложенных директорий в каталоге:
$ find /mnt/usb -type d –print
На экран будет показан список директорий присутствующих в каталоге /mnt/usb . Теперь перейдем к следующей опции, это возможность поиска файлов установленного размера.
Поиск файлов по размеру:
$ find . -size 2000k –print
Будет произведен поиск файлов размером 2000 килобайт, размеры можно указывать и в мегабайтах, для этого вместо буковки «k» следует указать букву «M».
В качестве следующего примера мы будем использовать возможность поиска файлов по времени его модификации. Для этих целей мы воспользуемся опцией –mtime .
Поиск файлов, измененных за последние 2 дня:
$ find /var/www/html -mtime +2 –print
Поиск будет производиться в директории /var/www/html , и будут искаться файлы которые изменялись в течении последних 2-х дней. Пожалуй, одна из немаловажных и удобных опций поиска. Так же можно производить поиск по дате модификации с обратным условием. Давайте попробует найти файлы в директории, которые не изменялись в течении 5-ти дней.
Поиск файлов, не изменявшихся в течении 5-ти дней:
$ find /var/www/html -5 –print
На этом пока всё, надеюсь, данные примеры вам помогли разобраться с данной командой. Её удобство представлено наглядно, и знать о её возможностях не будет лишним, особенно если вы собираетесь в дальнейшем работать с системой Linux. Навыки грамотного поиска файлов значительно экономит ваше личное время, а как известно время бесценно. Успехов в труде!
Обновлено: 02.11.2019 Опубликовано: 25.07.2016
Самая универсальная и функциональная команда для поиска в Linux — find. Данная статья представляет из себя шпаргалку с примерами ее использования.
find <где искать> <опции>
<где искать> — путь к корневому каталогу, откуда начинать поиск. Например, find /home/user — искать в соответствующем каталоге. Для текущего каталога нужно использовать точку «.».
<опции> — набор правил, по которым выполнять поиск.
* по умолчанию, поиск рекурсивный. Для поиска в конкретном каталоге можно использовать опцию maxdepth .
Опция | Описание |
---|---|
-name | Поиск по имени. |
-iname | Регистронезависимый поиск по имени. |
-type |
Тип объекта поиска. Возможные варианты:
|
-size | Размер объекта. Задается в блоках по 512 байт или просто в байтах (с символом «c»). |
-mtime | Время изменения файла. Указывается в днях. |
-mmin | Время изменения в минутах. |
-atime | Время последнего обращения к объекту в днях. |
-amin | Время последнего обращения в минутах. |
-ctime | Последнее изменение владельца или прав на объект в днях. |
-cmin | Последнее изменение владельца или прав в минутах. |
-user | Поиск по владельцу. |
-group | По группе. |
-perm | С определенными правами доступа. |
-depth | Поиск должен начаться не с корня, а с самого глубоко вложенного каталога. |
-maxdepth | Максимальная глубина поиска по каталогам. -maxdepth 0 — поиск только в текущем каталоге. По умолчанию, поиск рекурсивный. |
-prune | Исключение перечисленных каталогов. |
-mount | Не переходить в другие файловые системы. |
-regex | По имени с регулярным выражением. |
-regextype <тип> | Тип ругулярного выражения. |
-L | Показывает содержимое символьных ссылок (симлинк). |
-empty | Искать пустые каталоги. |
-delete | Удалить найденное. |
-ls | Вывод как ls -dgils |
Показать найденное. | |
-print0 | Путь к найденным объектам. |
-exec <команда> {} \; | Выполнить команду над найденным. |
-ok | Выдать запрос перед выполнением -exec. |
Полный набор актуальных опций можно получить командой man find .
find / -name "file.txt"
* в данном примере будет выполнен поиск файла с именем file.txt по всей файловой системе, начинающейся с корня / .
Поиск файла по части имени:
find / -name "*.tmp"
* данной командой будет выполнен поиск всех папок или файлов в корневой директории /, заканчивающихся на .tmp
Найти все файлы или папки, которые начинаются на sess_ и заканчиваются на cd
find . -name "sess_*" -a -name "*cd"
* -a: логическое И, -o: логическое ИЛИ.
1. Поиск файлов, которые менялись определенное количество дней назад:
find . -type f -mtime +60
* данная команда найдет файлы, которые менялись более 60 дней назад.
2. Поиск файлов с помощью newer . Данная опция доступна с версии 4.3.3 (посмотреть можно командой find --version ).
а) дате изменения:
find . -type f -newermt "2019-11-02 00:00"
* покажет все файлы, которые менялись, начиная с 02.11.2019 00:00.
find . -type f -newermt 2019-10-31 ! -newermt 2019-11-02
* найдет все файлы, которые менялись в промежутке между 31.10.2019 и 01.11.2019 (включительно).
б) дате обращения:
find . -type f -newerat 2019-10-08
* все файлы, к которым обращались с 08.10.2019.
find . -type f -newerat 2019-10-01 ! -newerat 2019-11-01
* все файлы, к которым обращались в октябре.
в) дате создания:
find . -type f -newerct 2019-09-07
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
Искать в текущей директории и всех ее подпапках только файлы:
* f — искать только файлы.
Ищем все справами на чтение и запись:
find / -perm 0666
Находим файлы, доступ к которым имеет только владелец:
find / -perm 0600
find / -type f -exec grep -i -H "content" {} \;
* в данном примере выполнен рекурсивный поиск всех файлов в директории / и выведен список тех, в которых содержиться строка content .
find /data -type f -printf "%TY-%Tm-%Td %TT %p\n" | sort -r
* команда найдет все файлы в каталоге /data , добавит к имени дату модификации и отсортирует данные по имени. В итоге получам, что файлы будут идти в порядке их изменения.
find /home/user/* -type d -exec chmod 2700 {} \;
* в данном примере мы ищем все каталоги (type d ) в директории /home/user и ставим для них права 2700 .
Команду find удобно использовать для автоматического удаления устаревших файлов.
Открываем на редактирование задания cron:
И добавляем:
0 0 * * * /bin/find /tmp -mtime +14 -exec rm {} \;
* в данном примере мы удаляем все файлы и папки из каталога /tmp,
соторые старше 14
дней. Задание запускается каждый день в 00:00
.
* полный путь к исполняемому файлу find смотрим командой which find
— в разных UNIX системах он может располагаться в разных местах.