Linux console find command

Содержание
  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. How to Find Files in Linux Using the Command Line
  18. Find a File in Linux by Name or Extension
  19. Using Common find Commands and Syntax to Find a File in Linux
  20. Basic Examples
  21. Options and Optimization for find
  22. Find a File in Linux by Modification Time
  23. Use grep to Find a File in Linux Based on Content
  24. How to Find and Process a File in Linux
  25. How to Find and Delete a File in Linux
  26. More Information

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 .

Читайте также:  Python install on windows with cmd

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

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 , после которого должно передаваться имя файла (с временем модификации которого будет сравниваться время модификации каждого файла, находящегося в текущей директории).

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

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

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

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

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

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

Читайте также:  Quick сбербанк windows 10

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

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

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

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

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

Заключение

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

Источник

How to Find Files in Linux Using the Command Line

When you have to find a file in Linux, it’s sometimes not as easy as finding a file in another operating system. This is especially true if you are running Linux without a graphical user interface and need to rely on the command line. This article covers the basics of how to find a file in Linux using the CLI. The find command in Linux is used to find a file (or files) by recursively filtering objects in the file system based on a simple conditional mechanism. You can use the find command to search for a file or directory on your file system. By using the -exec flag ( find -exec ), files can be found and immediately processed within the same command.

Find a File in Linux by Name or Extension

Use find from the command line to locate a specific file by name or extension. The following example searches for *.err files in the /home/username/ directory and all sub-directories:

Using Common find Commands and Syntax to Find a File in Linux

find expressions take the following form:

  • The options attribute will control the find process’s behavior and optimization method.
  • The starting/path attribute will define the top-level directory where find begins filtering.
  • The expression attribute controls the tests that search the directory hierarchy to produce output.

Consider the following example command:

This command enables the maximum optimization level (-O3) and allows find to follow symbolic links ( -L ). find searches the entire directory tree beneath /var/www/ for files that end with .html .

Basic Examples

Command Description
find . -name testfile.txt Find a file called testfile.txt in current and sub-directories.
find /home -name *.jpg Find all .jpg files in the /home and sub-directories.
find . -type f -empty Find an empty file within the current directory.
find /home -user exampleuser -mtime -7 -iname «.db» Find all .db files (ignoring text case) modified in the last 7 days by a user named exampleuser.

Options and Optimization for find

The default configuration for find will ignore symbolic links (shortcut files). If you want find to follow and return symbolic links, you can add the -L option to the command, as shown in the example above.

find optimizes its filtering strategy to increase performance. Three user-selectable optimization levels are specified as -O1 , -O2 , and -O3 . The -O1 optimization is the default and forces find to filter based on filename before running all other tests.

Optimization at the -O2 level prioritizes file name filters, as in -O1 , and then runs all file-type filtering before proceeding with other more resource-intensive conditions. Level -O3 optimization allows find to perform the most severe optimization and reorders all tests based on their relative expense and the likelihood of their success.

Command Description
-O1 (Default) filter based on file name first.
-O2 File name first, then file type.
-O3 Allow find to automatically re-order the search based on efficient use of resources and likelihood of success.
-maxdepth X Search current directory as well as all sub-directories X levels deep.
-iname Search without regard for text case.
-not Return only results that do not match the test case.
-type f Search for files.
-type d Search for directories.

Find a File in Linux by Modification Time

The find command contains the ability to filter a directory hierarchy based on when the file was last modified:

The first command returns a list of all files in the entire file system that end with the characters conf and modified in the last seven days. The second command filters exampleuser user’s home directory for files with names that end with the characters conf and modified in the previous three days.

Use grep to Find a File in Linux Based on Content

The find command can only filter the directory hierarchy based on a file’s name and metadata. If you need to search based on the file’s content, use a tool like grep . Consider the following example:

This searches every object in the current directory hierarchy ( . ) that is a file ( -type f ) and then runs the command grep «example» for every file that satisfies the conditions. The files that match are printed on the screen ( -print ). The curly braces ( <> ) are a placeholder for the find match results. The <> are enclosed in single quotes ( ‘ ) to avoid handing grep a malformed file name. The -exec command is terminated with a semicolon ( ; ), which should be escaped ( \; ) to avoid interpretation by the shell.

How to Find and Process a File in Linux

The -exec option runs commands against every object that matches the find expression. Consider the following example:

This filters every object in the current hierarchy ( . ) for files named rc.conf and runs the chmod o+r command to modify the find results’ file permissions.

The commands run with the -exec are executed in the find process’s root directory. Use -execdir to perform the specified command in the directory where the match resides. This may alleviate security concerns and produce a more desirable performance for some operations.

The -exec or -execdir options run without further prompts. If you prefer to be prompted before action is taken, replace -exec with -ok or -execdir with -okdir .

How to Find and Delete a File in Linux

To delete the files that end up matching your search, you can add -delete at the end of the expression. Do this only when you are positive the results will only match the files you wish to delete.

In the following example, find locates all files in the hierarchy starting at the current directory and fully recursing into the directory tree. In this example, find will delete all files that end with the characters .err :

More Information

You may wish to consult the following resources for additional information on this topic. While these are provided in the hope that they will be useful, please note that we cannot vouch for the accuracy or timeliness of externally hosted materials.

This page was originally published on Monday, October 25, 2010.

Источник

Читайте также:  Как открыть папку usr mac os
Оцените статью