Все директории find linux

Содержание
  1. 14 примеров практического использования команды find в Linux
  2. 1. Вывод списка имен всех файлов из текущей директории и ее поддиректорий
  3. 2. Поиск файлов по их именам
  4. 3. Поиск файлов определенных типов
  5. 4. Поиск файлов по их именам без учета регистра
  6. 5. Вывод имен файлов, не соответствующих поисковому шаблону
  7. 6. Ограничение глубины поиска файлов
  8. 7. Вывод имен пустых файлов
  9. 8. Поиск файлов, принадлежащих определенной группе пользователей
  10. 9. Поиск файлов, принадлежащих определенному пользователю
  11. 10. Поиск недавно модифицированных файлов
  12. 11. Поиск файлов, модифицированных после указанного файла
  13. 12. Вывод имен всех поддиректорий директории
  14. 13. Поиск файлов по номерам соответствующих структур inode
  15. 14. Поиск файлов на основе времени последнего доступа
  16. Заключение
  17. Как выполнить поиск файлов и папок в Linux
  18. Поиск файла по имени при помощи утилиты locate
  19. Поиск в Linux при помощи утилиты find
  20. Поиск файла по имени
  21. Поиск файла по дате
  22. Поиск файла по размеру
  23. Поиск папки
  24. Поиск текста в Linux при помощи утилиты grep

14 примеров практического использования команды find в Linux

Оригинал: 14 Practical Examples of Linux Find Command for Beginners
Автор: Himanshu Arora
Дата публикации: 22 марта 2017 г.
Перевод: А.Панин
Дата перевода: 24 апреля 2017 г.

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

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

1. Вывод списка имен всех файлов из текущей директории и ее поддиректорий

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

А это вывод команды:

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

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

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

Например, следующая команда позволяет осуществить поиск в текущей директории файла с именем «testfile1.txt» :

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

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

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

Команда find также позволяет осуществлять поиск файлов заданных типов в заданных директориях (и их поддиректориях). Например, следующая команда позволяет осуществить поиск всех файлов с расширением .txt в вашей текущей директории:

Если вы не знаете, символ * является символом-шаблоном. Для ознакомления с дополнительной информацией об этих символах обратитесь к данному материалу .

4. Поиск файлов по их именам без учета регистра

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

Читайте также:  Windows recovery boot repair

Это вывод данной команды:

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

Если вам нужно, вы можете даже сообщать команде о необходимости вывода имен файлов, которые не соответствуют поисковому шаблону (эта функция называется инвертированным поиском). Вы можете воспользоваться данной функцией посредством оператора ! или -not .

Это вывод данной команды:

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

6. Ограничение глубины поиска файлов

Команда find также позволяет ограничить глубину поиска файлов определенным количеством поддиректорий. Для этого предназначен параметр -maxdepth .

Например, предположим, что имеется следующая структура директорий:

Теперь, если вам нужно осуществить поиск файла лишь до поддиректории «find» (другими словами, проигнорировать поддиректорию «howtoforge» ), вы можете воспользоваться следующей командой:

В данном случае параметр «-maxdepth 3» сообщает команде find о том, что необходимо исследовать лишь три уровня поддиректорий, причем на первом уровне расположена ваша текущая директория (или рабочая директория).

Это вывод данной команды:

Помимо maxdepth существует еще один параметр под названием mindepth (использование: mindepth [N] ). Этот параметр сообщает команде find о том, что следует осуществить переход в поддиректории уровня N перед началом поиска.

В результате поиск файлов будет осуществляться в директории find и ее поддиректориях.

Подводя итог всему сказанному, следует отметить, что если вам нужно осуществить поиск файла с расширением .txt в поддиректориях с уровня 2 по уровень 4, вы можете воспользоваться следующей командой:

7. Вывод имен пустых файлов

При необходимости вы можете использовать команду find для вывода списка всех пустых файлов в определенной директории (и ее поддиректориях). Для этого предназначен параметр -empty .

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

8. Поиск файлов, принадлежащих определенной группе пользователей

Команда find также позволяет осуществлять поиск файлов, принадлежащих определенной группе пользователей, благодаря поддержке параметра -group . Например, следующая команда позволяет вывести список всех файлов из вашей текущей директории и ее поддиректорий, принадлежащих группе пользователей «howtoforge» .

Это вывод приведенной выше команды в моем случае:

9. Поиск файлов, принадлежащих определенному пользователю

Команда find позволяет осуществлять поиск файлов по имени их владельца благодаря поддержке параметра -user . Например, следующая команда выведет имена всех файлов с расширением .txt (присутствующих в вашей текущей директории), владельцем которых является пользователь с именем «himanshu» :

10. Поиск недавно модифицированных файлов

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

Например, если вы хотите осуществить поиск файлов с расширением .txt (в вашей текущей директории), которые были модифицированы 1 минуту назад, вы можете использовать следующую команду:

11. Поиск файлов, модифицированных после указанного файла

Да, команда find позволяет осуществлять поиск даже тех файлов, которые были модифицированы после определенного файла. Для доступа к данной функции должен использоваться параметр -newer , после которого должно передаваться имя файла (с временем модификации которого будет сравниваться время модификации каждого файла, находящегося в текущей директории).

Читайте также:  Indesign 2019 mac os

12. Вывод имен всех поддиректорий директории

Помимо всех описанных, существует параметр команды find, позволяющий вывести имена всех поддиректорий текущей директории. Это параметр -type , в качестве значения которого должен передаваться символ d .

Это вывод данной команды в моем случае:

Помимо упомянутого символа d , существуют и другие символы, которые могут передаваться в качестве значения параметра -type . Для ознакомления с их списком следует обратиться к странице руководства.

13. Поиск файлов по номерам соответствующих структур inode

Вы можете передать номер структуры inode команде find для поиска соответствующего ей файла (если таковой существует). Для доступа к данной функции может использоваться параметр -inum , причем в качестве его параметра должен передаваться номер структуры inode.

Это пример использования данной команды:

Совет: вы можете получить номер структуры inode, воспользовавшись командой ls -li .

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

Команда find также позволяет осуществлять поиск файлов на основе времени последнего доступа к ним — вы можете сообщить утилите о том, что нужно вывести имена файлов, которые были открыты N минут назад. Для доступа к этой функции может использоваться параметр -amin .

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

Заключение

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

Источник

Как выполнить поиск файлов и папок в Linux

В качестве вступительного слова дадим некоторое описание того, как вообще можно совершать поиск в linux. Для этих целей есть множество программ, но некоторые из них уже стали классикой поиска в linux. Подчеркнем, в данной статье мы сконцентрируемся исключительно на linux. Это означает, что даже если вы встретите утилиты с теми же самыми названиями в Solaris или операционных системах на ядрах BSD, приведенные советы могут работать не всегда. Так же это относится к busybox, которая реализует лишь небольшую часть функциональности оригинальных утилит.

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

Поиск файла по имени при помощи утилиты locate

Чтобы выполнить просто поиск файла по имени в Linux логичнее использовать команду locate — за счет заранее подготовленной базы она быстро выдаст нужный результат:

Если же вы получили сообщение о том, что команда не найдена, возможно её нужно установить. Для Debian-based дистрибутивов (Ubuntu, Mint) установить её можно командой:

# apt-get install mlocate

Пользователям RedHat, CentOS и Fedora стоит выполнить

# yum install mlocate

После установки нужно создать/обновить базу данных — файл, содержащий в себе «снимок» файловой системы, благодаря которому locate работает так быстро:

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

Читайте также:  Самый лучший видеоплеер для mac os

Поиск в Linux при помощи утилиты find

Куда более мощным и гибким инструментом для поиска файлов и папок в Linux выступает команда find. Её синтаксис упрощенно выглядит так:

find [path. ] [expression]

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

Чтобы выполнить в linux поиск файла по имени по всей файловой системе нужно ввести:

# find / -name myfilename

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

# find / -name «*part_of_name*»

«*» означает любое количество любых символов. Это дает нам возможность также производить поиск файлов по расширению:

Поиск файла по дате

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

# find /home -mtime -5

Данная команды выведет все файлы из каталога /home, измененные не более 5-ти дней назад.

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

А так, например, можно выполнит поиск файлов по размеру:

# find /home -size +1G

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

Поиск папки

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

# find / -type d -name «*mysql*»

Здесь ключ «-type» указывает на тип. На текущий момент времени find поддерживает следующие типы:

  • b — блочное устройство
  • c — символьное устройство
  • d — папка (дирректория)
  • p — именнованный канал
  • f — обычный файл
  • l — символическая ссылка
  • s — сокет
  • D — дверь (только для Solaris)

Подробнее о различных параметрах поиска find вы можете почитать, введя команду

Поиск текста в Linux при помощи утилиты grep

Да, grep действительно очень хорош, когда речь заходит о поиске текста в файлах в linux по паттерну. Сразу оговоримся, что искать текст мы будем в файлах в формате plain text — чистый текст, таких как конфигурационные файлы, сценарии командного интерпретатора (bash. python, php. ) и др. Искать по файлам Word и Excel грепом эффективно вряд ли получится.

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

# grep -lri root /etc/*

Такая команда выведет имена всех файлов, в которых удастся найти заветные 4 буквы «root». Здесь ключ «-l» заставляет grep выводить только имена файлов. Т.е. если вы хотите увидить ещё и ту саму строку, где удалось найти запрашиваемое слово, то «-l» стоит не указывать. Ключ «-r» выполняет поиск не только по /etc, но и по всем файлам во всех подпапках. И наконец ключ «-i» говорит не принимать во внимание регистр, т.е. grep будет искать не только слово «root», но и «ROOT», и «rOOt». Вы поняли

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

# grep -lri ^root /etc/*

Крышка в начале слова «root» обязывает grep выводит только те файлы, где слово «root» стоит в начале строки. И таких трюков достаточно много. Если вы еще не знакомы с regex, то стоит начать хотябы с википедии

Источник

Оцените статью