Главная Блог 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-ФЗ «О персональных данных», на условиях и для целей, определенных в Соглашении на обработку персональных данных