Главная Блог find в Linux

find в Linux

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

Перечислим основные опции, которые можно использовать с командой find:

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


find /path/to/search -name «filename.txt»


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


find /path/to/search -type f -name «*.txt»


Поиск файлов, измененных за последние 7 дней:


find /path/to/search -mtime -7


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


find /path/to/search -user username


Поиск файлов и выполнение определенной команды для каждого найденного файла:


find /path/to/search -type f -exec ls -l {} \;


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

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

Приведем пример.


find /путь/к/каталогу -опции


Где:

Например, для поиска всех файлов с расширением .txt в каталоге /home/user/docs, можно использовать следующую команду:


find /home/user/docs -name «*.txt»


Эта команда найдет все файлы с расширением .txt в каталоге /home/user/docs и его подкаталогах.

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

Среднее время реакции на обращение: 13,5 мин.
Среднее время решения задачи: 1 час 21 мин.

Поиск по имени: find name

Команда find в Linux позволяет осуществлять поиск файлов и каталогов по их имени с помощью опции -name. Расскажем, как это работает:


find /путь/к/каталогу -name «шаблон_имени»


Где:

  • /путь/к/каталогу – это путь к каталогу, в котором нужно выполнить поиск.
  • «шаблон_имени» – это шаблон имени файла или каталога, по которому будет осуществляться поиск. Можно использовать обычные символы и метасимволы, такие как * (соответствует любой последовательности символов) и ? (соответствует одному символу).

Приведем пример:


find /home/user/docs -name «example.txt»


Эта команда найдет все файлы с именем example.txt в каталоге /home/user/docs и его подкаталогах.

Если вы хотите выполнить поиск регистронезависимо (то есть, игнорируя регистр символов), вы можете использовать опцию -iname вместо -name.


find /home/user/docs -iname «example.txt»


Эта команда также найдет файлы с именем example.txt, независимо от регистра символов, в каталоге /home/user/docs и его подкаталогах.

Поиск по расширению

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


find /путь/к/каталогу -name «*.расширение»


Где:

  • /путь/к/каталогу – это путь к каталогу, в котором нужно выполнить поиск.
  • «*.расширение» – это шаблон имени файла, который включает в себя символ *, соответствующий любой последовательности символов, и указание расширения файла.

Например, если вы хотите найти все файлы с расширением .txt в каталоге /home/user/docs, вы можете использовать следующую команду:


find /home/user/docs -name «*.txt»


Эта команда найдет все файлы с расширением .txt в каталоге /home/user/docs и его подкаталогах.

Если вы хотите выполнить поиск, игнорируя регистр символов расширения, то можно использовать опцию -iname:


find /home/user/docs -iname «*.txt»


Эта команда также найдет файлы с расширением .txt независимо от регистра символов, в каталоге /home/user/docs и его подкаталогах.

Поиск по типу файла: find file

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


find /путь/к/каталогу -type тип_файла


Где:

  • /путь/к/каталогу – это путь к каталогу, в котором нужно выполнить поиск.
  • тип_файла – это тип файла, который вы хотите найти. Некоторые из распространенных значений включают f (обычные файлы), d (каталоги), l (символические ссылки) и т. д.

Например, если вы хотите найти все обычные файлы в каталоге /home/user/docs, вы можете использовать следующую команду:


find /home/user/docs -type f


Эта команда найдет все обычные файлы в каталоге /home/user/docs и его подкаталогах.

Если вы хотите найти все каталоги, вы можете использовать тип d:


find /home/user/docs -type d


Эта команда найдет все каталоги в каталоге /home/user/docs и его подкаталогах.

 

90% клиентов пришли к нам по рекомендации

Поиск с исключением

Для выполнения поиска с исключением определенных файлов или каталогов при использовании команды find в Linux вы можете воспользоваться опцией -not или !.


find /путь/к/каталогу -not -name «шаблон_исключения»


или


find /путь/к/каталогу ! -name «шаблон_исключения»


Где:

  • /путь/к/каталогу – это путь к каталогу, в котором нужно выполнить поиск.
  • «шаблон_исключения» – это шаблон имени файла или каталога, который вы хотите исключить из поиска.

Если вы хотите найти все файлы в каталоге /home/user/docs, но исключить файлы с расширением .tmp, вы можете использовать следующую команду:


find /home/user/docs -not -name «*.tmp»


Эта команда найдет все файлы в каталоге /home/user/docs, кроме файлов с расширением .tmp.

Вы также можете комбинировать различные условия для более точного поиска. Чтобы найти все файлы в каталоге /home/user/docs, кроме файлов с расширением .tmp и каталогов с именем backup, вы можете использовать такую команду:


find /home/user/docs -not \( -name «*.tmp» -o -name «backup» \)


Эта команда найдет все файлы в каталоге /home/user/docs, которые не соответствуют условиям -name «*.tmp» или -name «backup». Символы \( и \) используются для объединения нескольких условий в группу.

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

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

Для выполнения поиска в нескольких каталогах с помощью команды find в Linux вы можете указать все нужные каталоги после пути к исходному каталогу.


find /путь/к/каталогу1 /путь/к/каталогу2 /путь/к/каталогу3 -опции


Где:

  • /путь/к/каталогу1, /путь/к/каталогу2, /путь/к/каталогу3 – это пути к каталогам, в которых вы хотите выполнить поиск.
  • -опции – это опции поиска, такие как -name, -type, -size, -mtime, -user и другие.

Если вы хотите выполнить поиск файлов с расширением .txt в каталогах /home/user/docs и /home/user/files, вы можете использовать следующую команду:


find /home/user/docs /home/user/files -name «*.txt»


Эта команда выполнит поиск файлов с расширением .txt в обоих указанных каталогах.

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

Для поиска файлов, принадлежащих определенному пользователю в Linux, можно использовать команду find с опцией -user.


find /путь/к/каталогу -user имя_пользователя


Где:

  • /путь/к/каталогу – это путь к каталогу, в котором вы хотите выполнить поиск.
  • имя_пользователя – это имя пользователя, файлы которого вы хотите найти.

Если вы хотите найти все файлы в каталоге /home/user/docs, принадлежащие пользователю user1, вы можете использовать следующую команду:


find /home/user/docs -user user1


Эта команда найдет все файлы в каталоге /home/user/docs, принадлежащие пользователю user1.

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


find . -user $USER


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

Поиск по правам пользователя

Для поиска файлов в Linux по правам доступа пользователя (чтение, запись, выполнение) можно воспользоваться командой find с опцией -perm.


find /путь/к/каталогу -perm /mode


Где:

  • /путь/к/каталогу – это путь к каталогу, в котором вы хотите выполнить поиск.
  • /mode – это режим доступа, который вы хотите найти. Вы можете использовать различные способы определения прав доступа, например, в восьмеричном (например, 755), символьном (например, u+rwx) или комбинированном формате.

Если вы хотите найти все файлы в каталоге /home/user/docs, к которым у текущего пользователя есть права на запись, вы можете использовать следующую команду:


find /home/user/docs -perm /u+w


Эта команда найдет все файлы в каталоге /home/user/docs, к которым у текущего пользователя есть права на запись.

Если вы хотите найти файлы с конкретным режимом доступа, вы можете использовать точное значение режима доступа в восьмеричной нотации. Например, чтобы найти файлы с правами доступа 644 (чтение и запись для владельца, чтение для группы и остальных), вы можете использовать:


find /home/user/docs -perm 644


Эта команда найдет все файлы в каталоге /home/user/docs, имеющие права доступа 644.

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

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

Для выполнения поиска файлов в Linux по дате и времени их последней модификации можно использовать команду find с опцией -mtime.


find /путь/к/каталогу -mtime +/-n


Где:

  • /путь/к/каталогу – это путь к каталогу, в котором вы хотите выполнить поиск.
  • +/-n – это количество дней назад (с символом +) или ровно n дней назад (без символа +), которое указывает, как давно файл был изменен.

Например, если вы хотите найти все файлы в каталоге /home/user/docs, которые были изменены менее 7 дней назад, вы можете использовать следующую команду:


find /home/user/docs -mtime -7


Эта команда найдет все файлы в каталоге /home/user/docs, которые были изменены в течение последних 7 дней.

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


find /home/user/docs -mtime 7


Эта команда найдет все файлы в каталоге /home/user/docs, которые были изменены ровно 7 дней назад. Также вы можете использовать опцию -mmin, чтобы указать количество минут назад, вместо дней.

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

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

Для поиска файлов в Linux по их размеру вы можете использовать команду find с опцией -size.


find /путь/к/каталогу -size [+/-]размер


Где:

  • /путь/к/каталогу – это путь к каталогу, в котором вы хотите выполнить поиск.
  • [+/-]размер – это размер файла, который вы хотите найти. Размер может быть указан в байтах (c), килобайтах (k), мегабайтах (M) или гигабайтах (G). Знак + указывает на поиск файлов больше заданного размера, а — на поиск файлов меньше заданного размера.

К примеру, если вы хотите найти все файлы в каталоге /home/user/docs, размер которых больше 1 мегабайта, вы можете использовать следующую команду:


find /home/user/docs -size +1M


Эта команда найдет все файлы в каталоге /home/user/docs, размер которых больше 1 мегабайта. Если вы хотите найти все файлы, размер которых меньше 100 килобайт, вы можете использовать:


find /home/user/docs -size -100k


Эта команда найдет все файлы в каталоге /home/user/docs, размер которых меньше 100 килобайт. Также вы можете использовать опцию -empty, чтобы найти пустые файлы, или -nempty, чтобы найти файлы, которые не пустые.

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

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

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

Чтобы найти пустые файлы:


find /путь/к/каталогу -type f -empty


Где:

  • /путь/к/каталогу – это путь к каталогу, в котором вы хотите выполнить поиск.
  • -type f – указывает на то, что вы ищете только файлы (не каталоги).
  • -empty – это опция, указывающая на поиск пустых файлов.

Например:


find /home/user/docs -type f -empty


Эта команда найдет все пустые файлы в каталоге /home/user/docs и его подкаталогах.

Чтобы найти пустые каталоги:


find /путь/к/каталогу -type d -empty


-type d указывает на то, что вы ищете только каталоги (не файлы).

К примеру:


find /home/user/docs -type d -empty


Эта команда найдет все пустые каталоги в каталоге /home/user/docs и его подкаталогах.

Поиск пустых файлов и каталогов может быть нужным при очистке файловой системы от лишних или ненужных элементов.

Удаление файлов

Для удаления файлов в Linux можно использовать команду rm.

Удаление одного файла

rm файл

Удаление нескольких файлов

rm файл1 файл2 файл3

Удаление файлов с использованием шаблонов

rm шаблон

Удаление файлов с подтверждением

rm -i файл

Удаление каталогов вместе с их содержимым

rm -r каталог

Удаление файлов без подтверждения ошибок

rm -f файл

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

Заключение

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

Синтаксис команды find выглядит следующим образом:


find [путь] [выражение]


[путь] указывает директорию, с которой начнется поиск (по умолчанию – текущая директория), а [выражение] содержит критерии поиска.

Чтобы найти все файлы JPEG в директории /var/www и ее поддиректориях, можно использовать следующую команду:


find /var/www -name «*.jpg»


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

Еще один полезный пример использования – удаление всех пустых файлов txt из текущей директории и всех поддиректорий:


find . -type f -name «*.txt» -empty -delete


Эта команда найдет все пустые файлы с расширением txt в текущей директории (и всех поддиректориях) и удалит их.

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

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

Остались вопросы?

Оставьте заявку и наш менеджер свяжется с Вами в течение 15 минут

    Подберем индивидуальное
    решение под ваш запрос

    • Опыт более 8 лет в оказании ИТ-услуг
    • В штате 20 квалифицированных специалистов с разными компетенциями
    • Более 260 успешно реализованных проектов

      Нажимая кнопку «Отправить», я даю свое согласие на обработку моих персональных данных, в соответствии с Федеральным законом от 27.07.2006 года №152-ФЗ «О персональных данных», на условиях и для целей, определенных в Соглашении на обработку персональных данных