Home  >  Article  >  Operation and Maintenance  >  How to use the Find command to find files in Linux

How to use the Find command to find files in Linux

青灯夜游
青灯夜游Original
2019-03-15 16:25:354861browse

Linux Find command is one of the most powerful tools in the Linux system administrator tool library. It allows us to search for files and directories in the directory hierarchy based on an expression given by the user, applying the user to each matching file. specified operation. The following article will show you how to use the Find command. I hope it will be helpful to you.

How to use the Find command to find files in Linux

Linux Find command

Use the find command to determine the file permissions, type, date, ownership, size Wait to search for files. It can also be used in conjunction with other tools, such as grep or sed to perform operations on these files

Before discussing how to use the find command, let's first understand the basic syntax:

find [options] [path...] [expression]

Description:

● Options attribute: Controls the processing of symbolic links, debugging options and optimization methods.

● Path... attribute: Defines the starting directory where find will search for files.

● Expression attribute: consists of "options", "search mode" and "operations separated by operators".

Let’s take a look at the following example:

find  -L /home/projects/ -name "*.js" -exec chmod 644 {} \;

Description: This command contains a parameter -L (options), which allows the find command to follow symbolic links and search /home/projects/ (path ...), find all files ending with .js(expression) and set the permissions of all matching files to 644.

How to find files by type?

To specify the file type to be found, you need to use the -type parameter.

You can use the following descriptors to specify file types:

● f: Regular file

● d: Directory

● l: Symbolic link

●●c: Role device

●b: Block device

●p: Named pipe (FIFO)

● s: Socket

Example:

If you want to find all directories in the current working directory, you can use:

find . -type d

If you want to list all character devices on the system type:

find / -type c

How to find files by name?

Finding files by name is probably the most common use of the find command. To find files by name, pass the -name option along with the name of the file you want to search for.

Example:

To search for a file named document.pdf in the /home/linuxize directory, you can use the following command:

sudo find /home/linuxize -type f -name document.pdf

If To run a case-insensitive search, you can change the -name option using the -iname command:

sudo find /home/linuxize -type f -iname document.pdf

Description: The above command will match Document.pdf, DOCUMENT.pdf..etc.

How to find files by extension?

Searching for files by extension is the same as searching for files by name.

For example:

If you want to find all files ending with .log.gzinside /var/log/nginx directory, you can use:

find /var/log/nginx -type f -name '*.log.gz'

If you want to find all files that do not match the regular expression *.log.gz you can use the -not parameter. For example, to find all files that do not end with *.log.gz, use:

find /var/log/nginx -type f -not -name '*.log.gz'

How to find files by size?

To find files based on their size, you need to pass the -size parameter along with the size condition. File sizes can be specified using the following suffixes:

● b: 512-byte blocks (default)

● c: Bytes

● w: Double-byte words

● k:Kilobytes

● M:Megabytes

● G:Gigabytes

For example:

To be in / To find all files in the tmp directory that are exactly 1024 bytes, you can run the following command:

find /tmp -type f -size 1024c

The find command also allows us to search for files larger or smaller than the specified size. For example:

We can search all files smaller than 1MB in the current working directory, this requires adding a minus sign before the size value:

find . -type f -size -1M

If you want to search files larger than 1MB, you need Use the plus sign:

find . -type f -size +1M

to search even files within a size range. For example, the following command will find all files between 1 and 2 MB:

find . -type f -size +1M -size 21M

How to find files by modification date?

The find command can also search for files based on when they were last modified, accessed, or changed.

Same as when searching by size, you can use the plus and minus signs to specify greater or less than.

For example:

You modified a dovecot configuration file a few days ago, but you forgot the file name. We can easily filter all files in the /etc/dovecot/conf.d/ directory ending in .conf that have been modified in the past 5 days:

find /etc/dovecot/conf.d -name "*.conf" -mtime 5

We can also list 30 days Or all files in the /home directory that were modified more recently:

find /home -mtime +30 -daystart

How to find files by permissions?

To filter files based on file permissions, you need to use the -perm option.

For example:

要在/var/www/html目录中查找权限为775的所有文件:

find /var/www/html -perm 644

还可以使用减号-或斜杠/为数字模式添加前缀。

当斜杠/用作前缀时,至少一个类别(用户,组或其他类别)必须至少为文件匹配设置相应的位。

find . -perm /444

说明:搜索对用户,组或其他人设置了读权限的所有文件。

如果使用减号-作为前缀,则必须至少设置要匹配的文件。

find . -perm -664

说明:搜索对所有者和组具有读写权限的文件,并且其他用户可以读取。

如何按所有者查找文件?

要查找特定用户或组拥有的文件,可以使用-user和-group选项。

例如,要搜索用户拥有的所有文件和目录linuxize,可以运行:

find / -user linuxize

这是更高级的示例,假设是希望查找用户www-data拥有的所有文件,并将匹配文件的所有权从www-data更改为nginx:

find / -user www-data -type f  -exec chown nginx {} \;

相关视频教程推荐:《linux教程

以上就是本篇文章的全部内容,希望能对大家的学习有所帮助。更多精彩内容大家可以关注php中文网相关教程栏目!!!

The above is the detailed content of How to use the Find command to find files in Linux. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn