Linux——find命令超详解(狠狠爱住)

目录

以下是find命令的一些 expression 参数:

atime +n

-atime -n:

-perm nnn:

-type x ;

-size n:

-links n:

-user 用户名 :

-print:

-ls;

-exec cmd {} \;

结语:

其他文章:


在 Linux 系统中,find 命令用于在指定目录中查找文件和目录。

它的基本语法如下:

find [path] [expression]

其中,path 表示要查找的目录路径;expression 表示要匹配的表达式,可以用来指定要查找的文件名、类型、大小等条件

以下是find命令的一些 expression 参数:

                -name 文件名           以文件名查找
                -atime +n         查找访问时间在n天以前的文件
                -atime -n         查找访问时间在n天以内的文件
                -perm nnn         查找具有特定文件权限的文件
                -type x         查找文件类型为x的文件
                -size n         查找指定文件大小的文件
                -links n         查找链接数量为n的文件
                -user 用户名         查找指定用户的所有文件
                -print         用来打印找到的文件路径
                -ls         用来显示找到的文件的详细信息
                -exec cmd {};         用来在找到的文件上执行指定命令

atime +n

是在 find 命令中用来查找访问时间(access time)在 n 天前的文件。

这个参数后面的 "n" 代表天数,加号表示查找访问时间在 n 天之前的文件,不带加号则表示查找访问时间正好是 n 天前的文件。

例如,

find /path/to/search -type f -atime +7

将会在 /path/to/search 目录及其子目录中查找访问时间在 7 天前的所有文件。

atime 参数代表的是访问时间,也就是文件最后一次被读取的时间,而不是修改时间或创建时间。

同时,使用 atime 参数可能会导致性能问题,因为每次查找都需要读取文件元数据并比较访问时间。建议在使用时谨慎考虑。

-atime -n:

是在 find 命令中用来查找最后访问时间在指定时间之前的文件的选项。这里的 "-n" 是一个数字,表示指定的时间。负数表示在 n 天之前,正数表示在 n 天之内。

举个栗子:

find /path/to/search -type f -atime -7

上述命令将会在 /path/to/search 目录及其子目录中查找最后访问时间在过去 7 天内的文件。

需要注意的是,-atime 选项用于查找最后访问时间,单位为天。可以使用负数或正数来限定时间范围。

-perm nnn:

是在 find 命令中用来查找具有特定权限的文件的参数。这里的 "nnn" 代表文件权限的数字表示形式,通常是三个八进制数字,分别表示文件所有者、文件所属组和其他用户的权限。

举个栗子,如果要查找具有特定权限的文件,可以使用类似如下的命令:

find /path/to/search -type f -perm 644

这条命令将会在 /path/to/search 目录及其子目录中查找具有 -rw-r--r-- 权限(即644权限)的所有文件。

-type x ;

是在 find 命令中用来根据文件类型进行筛选的选项。这里的 "x" 可以是以下几种类型之一:

  • f:普通文件
  • d:目录
  • l:符号链接
  • c:字符设备文件
  • b:块设备文件
  • s:套接字文件
  • p:命名管道(FIFO)

举个栗子:

find /path/to/search -type d

上述命令将会在 /path/to/search 目录及其子目录中查找所有的目录。

-type 选项用于指定要查找的文件类型,可以根据具体需求选择不同的类型。

-size n

是在 find 命令中用来查找指定文件大小的参数。这里的 "n" 代表文件大小,可以使用正数、负数或者零来指定。

以下是一些常见的 -size 参数的用法:

  • -size +n:查找大于 n 字节的文件。
  • -size -n:查找小于 n 字节的文件。
  • -size n:查找正好是 n 字节的文件。

举个栗子,如果要查找所有大于 1MB 的文件,可以使用如下命令:

find /path/to/search -type f -size +1M

这条命令将会在 /path/to/search 目录及其子目录中查找所有大于 1MB 的文件。

需要注意的是,-size 参数默认单位是512字节块(block)。你可以使用其他单位来指定文件大小,例如 k 表示KB,M 表示MB,G 表示GB。例如,-size +100k 表示查找大于 100KB 的文件。

同时,-size 参数也可以与逻辑运算符 -and-or 以及 -not 结合使用,以实现更复杂的条件组合。

-links n:

是在 find 命令中用来查找指定硬链接数的文件的选项。这里的 "n" 是一个数字,表示文件的硬链接数。

举个栗子:

find /path/to/search -type f -links 2

上述命令将会在 /path/to/search 目录及其子目录中查找硬链接数为 2 的所有普通文件。

需要注意的是,-links 选项用于查找硬链接数等于指定数字的文件。硬链接是指多个文件名指向同一个文件实体,因此硬链接数代表了相同实体的不同名称个数。

-user 用户名 :

是在 find 命令中用来查找指定用户所有文件的参数。这里的 "用户名" 是指系统中存在的有效用户名。

举个栗子:

find /path/to/search -type f -user username

上述命令将会在 /path/to/search 目录及其子目录中查找属于 "username" 用户的所有文件。

需要注意的是,-user 参数只能匹配文件的所有者。如果你想要查找其他用户权限下的文件,可能需要使用其他方法,例如使用 sudo 权限或切换用户来执行命令。

同时,-user 参数也可以与逻辑运算符 -and-or 以及 -not 结合使用,以实现更复杂的条件组合。

-print:


是在 find 命令中用来打印找到的文件路径的选项。它会将匹配的文件路径输出到标准输出(通常是终端)。

以下是一个示例命令:

find /path/to/search -type f -name "*.txt" -print

上述命令将会在 /path/to/search 目录及其子目录中查找所有扩展名为 .txt 的文件,并将它们的路径打印到标准输出。

-printfind 命令的默认行为,如果没有指定其他的动作或选项,find 命令会自动执行 -print 操作。

-ls;

是在 find 命令中用来显示找到的文件的详细信息的选项。它会打印出文件的权限、所有者、大小、修改时间等属性信息。

举个栗子:

find /path/to/search -type f -name "*.txt" -ls

上述命令将会在 /path/to/search 目录及其子目录中查找所有扩展名为 .txt 的文件,并显示这些文件的详细信息。

-exec 不同,-ls 选项会自动打印文件信息,并不需要指定其他命令。

-exec cmd {} \;

是在 find 命令中用来在找到的文件上执行指定命令的选项。这里的 "cmd" 是要执行的命令,"{}" 是一个占位符,代表找到的文件路径。

举个栗子:

find /path/to/search -type f -name "*.txt" -exec ls -l {} \;

上述命令将会在 /path/to/search 目录及其子目录中查找所有扩展名为 .txt 的文件,并对每个文件执行 ls -l 命令,显示文件的详细信息。

在使用 -exec 选项时,{} 必须以 \; 结尾,用来表示 -exec 命令的结束。\; 是为了与 shell 的语法相匹配,以避免解析错误。

结语:

需要注意的是,find 命令对于大型目录或繁琐的表达式可能需要一段时间才能完成。另外,为了避免误删文件,建议在使用 -delete 等删除操作时先使用 ls 命令预览匹配到的文件列表


其他文章:

Linux------mv命令超详解(狠狠爱住)-CSDN博客

Linux-------rm命令超详解(狠狠爱住)-CSDN博客

Linux-----touch命令超详解(狠狠爱住)-CSDN博客

Linux——mkdir命令(狠狠爱住)-CSDN博客

Linux——ls,pwd,cd 基础命令串讲(狠狠爱住)-CSDN博客

Linux系统(狠狠爱住)-CSDN博客

你可能感兴趣的:(Linux专栏,linux,运维,服务器)