Меню Рубрики

Поиск файлов в linux через консоль

Как искать файлы из командной строки Linux

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

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

Но как насчет командной строки? Если вам приходится часто работать в командной строке или вы администрируете GUI-less Linux-серверы, куда вы обращаетесь, когда вам нужно найти файл? К счастью, Linux имеет именно то, что вам нужно для поиска файлов, о которых идет речь, и все это уже встроено прямо в систему.

Эта команда находится в поиске. Чтобы вам было еще удобнее находится в этой середе, как только вы начнете ею пользоваться, вам необходимо начать использовать в своих скриптах Bash. Это не только удобно, но и быстро.

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

Как использовать команду

Когда я впервые увидел Linux, я не совсем понял, как работает команда find; Поэтому он никогда не работал так, как я ожидал. Но все оказалось намного проще, чем я думал. Выполните команду find FILENAME (где FILENAME — имя файла), и команда должна была найти файл и отчитаться пользователю. Мало ли я знал, что командование будет больше, чем это. Намного больше.

Если вы выполните команду man find, вы увидите синтаксис команды find:

Естественно, если вы не знакомы с тем, как работает «man», вы можете быть смущены или даже ошеломлены этим синтаксисом. Для простоты понимания давайте упростим смысл этой команды. Самый простой синтаксис базовой команды find будет выглядеть так:

Теперь мы увидим это в работе.

Найти по названию

Давайте разберем эту базовую команду, чтобы сделать ее максимально понятной для каждого. Наиболее упрощенная структура команды find должна включать путь к файлу, параметр и имя самого файла. Возможно, вы подумаете: «Если я знаю путь к файлу, я уже знаю, где его найти!». Ну, путь к файлу может быть корнем вашего диска; Поэтому / будет законным путем. Но все намного проще, поскольку ваш путь займет больше времени, для обработки — потому что он должен начинаться с нуля — но, если вы не знаете, где находится файл, вы можете начать с него. Во имя эффективности всегда лучше иметь хотя бы идею, с которой начать поиск.

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

Name — с учетом регистра

Iname – без учета регистра

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

Если, однако, вы должны были изменить команду, используя опцию -iname, команда find найдет ваш файл, независимо от случая. Итак, новая команда выглядит так:

Поиск по типу

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

  • F — обычный файл
  • D — каталог
  • L — символическая ссылка
  • C — символьные устройства
  • B — блочные устройства

Теперь предположим, что вы хотите найти все блокирующие устройства (файл, который ссылается на устройство) в вашей системе. С помощью опции -type мы можем сделать это следующим образом:

Вышеприведенная команда привела бы к довольно большому количеству результатов (большая часть из которых указывала на запрещенное разрешение), но включала бы вывод, подобный этому:

Вуаля! Блокировать устройства.

Мы можем использовать тот же параметр, который может помочь нам найти файлы конфигурации. Например, вы хотите найти все «обычные» файлы, которые заканчиваются расширением conf. Тогда эта команда будет выглядеть примерно так:

Вышеупомянутая команда просматривала всю структуру каталогов, чтобы найти все обычные файлы, заканчивающиеся на .conf. Если вы знаете, что большинство ваших файлов конфигурации размещены в / etc, вы можете указать, это вот так:

Вышеупомянутая команда отобразит все ваши .conf-файлы из / etc (Рисунок 1).

Вывод результатов в файл

Один очень удобный трюк — вывести результаты поиска в файл. Когда вы знаете, что результат может быть обширным, или если вы захотите прочесть результаты позже, это может оказаться невероятно полезным. Для этого мы будем использовать тот же пример, что и выше, и перенесем результат в файл с именем conf_search. Такая новая команда будет выглядеть примерно так:

find /etc -type f -name “*.conf” > conf_search

Теперь у вас будет файл (conf_search), который содержит все результаты команды find.

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

Теперь мы дойдем до того момента, когда команда find станет невероятно полезной. У меня были случаи, когда десктопы или серверы просто находили свои жесткие диски загадочно заполненными. Для того чтобы быстро освободить место (или помочь найти проблему), вы можете использовать команду find, чтобы найти файлы определенного размера. Скажем, например, вы хотите увеличить размер и найти файлы размером более 1000 МБ. Команда find может быть выдана с помощью опции -size, например:

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

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

  • C — байт
  • K — Килобайты
  • M — мегабайт
  • G — гигабайт
  • B — 512-байтовые блоки

Продолжай учиться

Мы только поверхностно рассказали про команды find, но теперь у вас есть фундаментальное понимание того, как находить файлы на ваших Linux-системах. Убедитесь, что вы поняли команду man find, чтобы получить более глубокое и более полное представление о том, как заставить этот мощный инструмент работать на вас.

Если у вас остались вопросы по теме «Как искать файлы из командной строки Linux» то, пишите нам про них в форму комментариев на нашем сайте. Также обязательно расскажите был ли этот инструмент полезен вам при поиске файлов в Linux. Спасибо большое за визит!

Источник

Команда find в Linux

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

В этой статье мы поговорим о поиске с помощью очень мощной команды find Linux, подробно разберем ее синтаксис, опции и рассмотрим несколько примеров.

Основная информация о Find

Find — это одна из наиболее важных и часто используемых утилит системы Linux. Это команда для поиска файлов и каталогов на основе специальных условий. Ее можно использовать в различных обстоятельствах, например, для поиска файлов по разрешениям, владельцам, группам, типу, размеру и другим подобным критериям.

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

Команда find имеет такой синтаксис:

find [ папка] [ параметры] критерий шаблон [действие]

Папка — каталог в котором будем искать

Параметры — дополнительные параметры, например, глубина поиска, и т д

Критерий — по какому критерию будем искать: имя, дата создания, права, владелец и т д.

Шаблон — непосредственно значение по которому будем отбирать файлы.

Основные параметры команды find

Я не буду перечислять здесь все параметры, рассмотрим только самые полезные.

  • -P никогда не открывать символические ссылки
  • -L — получает информацию о файлах по символическим ссылкам. Важно для дальнейшей обработки, чтобы обрабатывалась не ссылка, а сам файл.
  • -maxdepth — максимальная глубина поиска по подкаталогам, для поиска только в текущем каталоге установите 1.
  • -depth — искать сначала в текущем каталоге, а потом в подкаталогах
  • -mount искать файлы только в этой файловой системе.
  • -version — показать версию утилиты find
  • -print — выводить полные имена файлов
  • -type f — искать только файлы
  • -type d — поиск папки в Linux

Критерии

Критериев у команды find в Linux очень много, и мы опять же рассмотрим только основные.

  • -name — поиск файлов по имени
  • -perm — поиск файлов в Linux по режиму доступа
  • -user — поиск файлов по владельцу
  • -group — поиск по группе
  • -mtime — поиск по времени модификации файла
  • -atime — поиск файлов по дате последнего чтения
  • -nogroup — поиск файлов, не принадлежащих ни одной группе
  • -nouser — поиск файлов без владельцев
  • -newer — найти файлы новее чем указанный
  • -size — поиск файлов в Linux по их размеру

Примеры использования

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

1. Поиск всех файлов

Показать все файлы в текущей директории:

2. Поиск файлов в определенной папке

Показать все файлы в указанной директории:

Искать файлы по имени в текущей папке:

Не учитывать регистр при поиске по имени:

3. Ограничение глубины поиска

Поиска файлов по имени в Linux только в этой папке:

find . -maxdepth 1 -name «*.php»

4. Инвертирование шаблона

Найти файлы, которые не соответствуют шаблону:

find . -not -name «test*»

5. Несколько критериев

Поиск командой find в Linux по нескольким критериям, с оператором исключения:

find . -name «test» -not -name «*.php»

Найдет все файлы, начинающиеся на test, но без расширения php. А теперь рассмотрим оператор ИЛИ:

find -name «*.html» -o -name «*.php»

6. Несколько каталогов

Искать в двух каталогах одновременно:

find ./test ./test2 -type f -name «*.c»

7. Поиск скрытых файлов

Найти скрытые файлы:

8. Поиск по разрешениям

Найти файлы с определенной маской прав, например, 0664:

find . type f -perm 0664

Найти файлы с установленным флагом suid/guid:

find / -maxdepth 2 -perm /u=s

Поиск файлов только для чтения:

find /etc -maxdepth 1 -perm /u=r

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

find /bin -maxdepth 2 -perm /a=x

9. Поиск файлов по группах и пользователях

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

Поиск файлов в Linux принадлежащих группе:

find /var/www -group developer

10. Поиск по дате модификации

Поиск файлов по дате в Linux осуществляется с помощью параметра mtime. Найти все файлы модифицированные 50 дней назад:

Поиск файлов в Linux открытых N дней назад:

Найти все файлы, модифицированные между 50 и 100 дней назад:

find / -mtime +50 –mtime -100

Найти файлы измененные в течении часа:

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

Найти все файлы размером 50 мегабайт:

От пятидесяти до ста мегабайт:

find / -size +50M -size -100M

Найти самые маленькие файлы:

find . -type f -exec ls -s <> \; | sort -n -r | head -5

find . -type f -exec ls -s <> \; | sort -n | head -5

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

find /tmp -type f -empty

13. Действия с найденными файлами

Для выполнения произвольных команд для найденных файлов используется опция -exec. Например, выполнить ls для получения подробной информации о каждом файле:

Удалить все текстовые файлы в tmp

find /tmp -type f -name «*.txt» -exec rm -f <> \;

Удалить все файлы больше 100 мегабайт:

find /home/bob/dir -type f -name *.log -size +10M -exec rm -f <> \;

Выводы

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

  • Поиск файла linux терминал
  • Поиск уязвимостей на сайте kali linux
  • Поиск текста во всех файлах linux
  • Поиск текста в файлах linux grep
  • Поиск содержимого в файлах linux