Linux search files by name

Команда 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 по их размеру.
Читайте также:  Linux check files in directory

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

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

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

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

Все три команды покажут одинаковый результат. Точка здесь означает текущую папку. Вместо неё можно указать любую другую.

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

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

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

Поиск по имени в текущей папке:

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

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

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

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

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

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

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

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

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

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

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

Эта команда найдёт как php, так и html файлы.

6. Тип файла

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

find . -type d -name «Загрузки»

Для поиска только файлов необходимо использовать параметр f:

find . -type f -name «Загрузки»

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

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

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

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

Найти скрытые файлы только в текущей папке. Имена скрытых файлов в Linux начинаются с точки:

find . -maxdepth 1 -type f -name «.*»

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

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

Права также можно задавать буквами для u (user) g (group) и o (other). Например, для того чтобы найти все файлы с установленным флагом Suid в каталоге /usr выполните:

sudo find /usr -type f -perm /u=s

Поиск файлов доступных владельцу только для чтения только в каталоге /etc:

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

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

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

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

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

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

find /var/www -group www-data

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

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

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

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

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

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

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

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

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

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

Читайте также:  Опера для линукс русский

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

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

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

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

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

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

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

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

Выводы

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

Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.

Источник

Find Files by Name in Linux

Finding files by their name is one of the most common scenarios of finding files in Linux. Here are a few examples to help.

Most often, you are looking for a file on Linux and you do not exactly know its true location on the system disk.

There are multiple ways to find files in the Linux command line. Most common and most reliable way is to use the find command.

The find command is extremely versatile and has way too many usages but here I’ll focus on finding files by their name.

I’ll explain how to use the ‘find’ command for:

  • Searching files using their name
  • Searching files with their exact name
  • Searching files for a particular pattern
  • Searching multiple files
  • Excluding certain files from the search results.

Besides these, I’ll also show how to use the grep command with the output from the find command. Let’s first start with an overview of the find command.

The utility ‘find’ looks for files that match a certain set of parameters like the file’s name, its modification date, its extension, etc. It has the following format:

If the file path is not specified, it searches in the current directory and its sub-directories.

Searching for Files Using their Name

Looking for a file with its name is a commonly used operation with the find command. The -iname option looks for a file regardless of its case.

For example, suppose you have two files abc.txt and ABC.txt. Both of them have the same name but different cases. Using the find command, you get both files in the results:

Find files with their name

Searching for Files Using their Exact Name

The -name option is case-sensitive in contrast to the -iname option, so you are going to get files with the exact name.

For example, let us look for a file with the name abc.txt :

Читайте также:  Fedora linux установка пакетов

Find files with exact name

The name of the file can be composed of wildcards as you will see later in this guide.

Searching for Files With a Particular Pattern

You can also filter files that follow a given pattern. For that, you can use wildcards.

Say, for instance, you are looking for all the configuration files on your system that end with the ‘.conf’ extension:

find /etc -type f -name "*.conf" | grep client.conf

Find files with their extension

In the same way, you can also search for files with the same name but with any extension of three characters as:

Find files with any extension

If you have several file names that contain a common string, say ‘VM’, the find command in this scenario will be as:

Find files with a matching pattern

So far, we have used a single directory (the home directory) with the ‘find’ command.

You can also search in multiple directories by specifying them on the CLI:

find ~/Desktop/example1/ ~/Desktop/example2/ -name 'abc*.*'

Find files in multiple directories

Searching for Multiple Files and Multiple Patterns

Suppose you want to find multiple files in a directory having .msi and .txt as file types.

Here you need to use both the name and type options on the CLI as:

find -type f \( -name "*.txt" -o -name "*.msi" \)

Search for multiple files

In a similar approach, you can extend the above command for more files by using extra -o options.

Excluding Certain Files from the Search Results

The find command can also exclude certain types of files from the search result:

find -name '*abc*' -type f \( ! -name '*.msi' \)

Exclude certain files from find search results

Here, the ‘find’ command will look for all the files having ‘abc’ string in their name. However, it will filter out the .msi type of files.

Other Common Examples of the ‘find’ Command

You have more options that can be used with the ‘find’ command. Let me share a few such examples:

System reporting low disk space? Find bigger files like this:

Using the above command, you can find files occupying more than 2000 Megabytes of space.

In case you need to save your findings for later investigation, redirect it to a file:

find -name '*abc*' -type f \( ! -name '*.msi' \) > mysearch.txt

Save the result of the find command

The type option with the find command opens many opportunities.

You can combine it with different file descriptors for different types of files. For example, ‘f’ for a regular file, ‘d’ for a directory, ‘l’ for a symbolic link, etc.

find /var/log -type f -name "*.log" 

Conclusion

In this guide, I explained how to search for files by their names using the find command. You saw multiple ways to narrow down the search path and most importantly, how to incorporate the ‘wildcards’ for pattern searching.

There are many more uses of the find command. Like you can use it to find recently modified files. Here are a few more common examples if you are interested.

You can always search man pages to get extensive insights into the various options with the ‘find’ command.

Источник

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