Linux下命令find命令文件查找
前言
find命令是Linux系统中的一个常用命令,用于在指定的目录中查找符合条件的文件或目录。
一、find 命令使用介绍
find
命令是 Linux 和 Unix 系统中常用的文件查找工具。它可以在指定目录及其子目录中查找符合指定条件的文件或目录,并将结果输出到终端。find
命令的语法如下:
find [path] [expression]
其中:
-
path
:查找的起始目录,可以是绝对路径或相对路径。如果不指定path
,则默认从当前目录开始查找。 -
expression
:用来指定查找的条件,可以是一些简单的逻辑运算符(如\-name
,\-type
,\-size
,\-mtime
,\-user
,\-group
等),也可以是一些复杂的文件名匹配模式(如通配符\*
、?
、\[ \]
等)。 -
\-name
:指定文件名模式,如\*.txt
表示查找所有以.txt
结尾的文件。 -
\-type
:指定文件类型,如\-type f
表示查找所有文件,\-type d
表示查找所有目录。 -
\-size
:指定文件大小范围,如\-size +10M
表示查找所有大小大于 10M 的文件。 -
\-mtime
:指定文件修改时间范围,如\-mtime -7
表示查找所有最近 7 天内修改过的文件。 -
\-user
:指定文件所有者,如\-user haoze
表示查找所有所有者为 haoze 的文件。 -
\-group
:指定文件所属组,如\-group example
表示查找所有所属组为 example 的文件。
以下是一些示例:
.代表的是相对路径当前目录,相对路径与绝对的路径的区别可以理解为在 Linux中凡是以/开头的目录均为绝对路径
- 查找当前目录及其子目录中所有以
.txt
结尾的文件:
find . -name "*.txt"
- 查找当前目录及其子目录中所有文件大小大于 1M 的文件:
find . -type f -size +1M
- 查找当前目录及其子目录中所有修改时间在最近 7 天内的文件:
find . -type f -mtime -7
- 查找当前目录及其子目录中所有所属组为 example 的文件:
find . -group example
以上为 find
命令的基本用法,还有很多高级用法可以查阅官方文档了解。
二、Linux文件权限4位数含义
- 普通权限:
RWX对应的权限是: r:4 w:2 x:1, 所以777就代表 rwxrwxrwx
[root@server /]# ls -l | head -5
total 32
lrwxrwxrwx. 1 root root 7 Jul 2 14:51 bin -> usr/bin
#777权限
dr-xr-xr-x. 5 root root 4096 Jul 2 14:53 boot
#555权限
drwxr-xr-x 20 root root 3240 Aug 9 16:08 dev
#755权限
drwxr-xr-x. 77 root root 8192 Aug 9 16:08 etc
#755权限
- 高级权限 suid,sgid,sticky
0777最前面的0,代表高级权限suid,sgid,sticky分为属主权限、属组权限、其他人权限
suid:0变为4、guid:0变为2、sticky:0变为1
suid, sgid和sticky是Linux系统中用于限制文件和目录的用户和组的三种权限。
- suid权限
suid权限是指文件或目录可以使其他用户以执行命令的方式来使用它们。当文件具有suid权限时,文件的所有者可以将文件或目录赋予其他用户,这些用户可以以root用户的身份来执行该文件或目录。
suid权限可以通过在文件上运行chmod +s命令来设置。例如,下面的命令将file.txt文件设置为具有suid权限:
[root@mysql5_7 ~]# ls -l file.txt
-rw-r--r-- 1 root root 0 Aug 9 20:33 file.txt #初始权限
[root@mysql5_7 ~]# chmod u+s file.txt
[root@mysql5_7 ~]# ll file.txt
-rwSr--r-- 1 root root 0 Aug 9 20:33 file.txt #可以看到多了个s权限
[root@mysql5_7 ~]# chmod u-s file.txt #取消权限
- sgid权限
sgid权限是指文件或目录的所有者和组可以使用它们。如果没有写权限, 则这个目录下的所有文件都不能被删除, 同时也不能添加新的文件. 如果希望用户能够添加文件但同时不能删除文件
sgid权限可以通过在文件上运行chmod +s命令来设置。例如,下面的命令将file.txt文件设置为具有sgid权限:
[root@mysql5_7 ~]# chmod g+s file.txt
[root@mysql5_7 ~]# ll file.txt
-rw-r-Sr-- 1 root root 0 Aug 9 20:33 file.txt
[root@mysql5_7 ~]# chmod g-s file.txt
- sticky权限
sticky权限是指只有文件或目录的拥有者和组用户才能进行写操作。当文件或目录具有sticky权限时,只有文件或目录的拥有者和组用户才能在文件或目录上进行写操作。其他用户可以读取和执行该文件或目录,但无法进行写操作。 设置该位后, 就算用户对目录具有写权限,也不能删除该文件。
sticky权限可以通过在文件上运行chmod +t命令来设置。例如,下面的命令将file.txt文件设置为具有sticky权限:
[root@mysql5_7 ~]# chmod o+t file.txt
[root@mysql5_7 ~]# ll file.txt
-rw-r--r-T 1 root root 0 Aug 9 20:33 file.txt
[root@mysql5_7 ~]# chmod o-t file.txt
总结
本文介绍了Linux系统中常用的find命令
的使用介绍以及高级用法,同时解释了Linux文件权限4位数的含义,包括普通权限、高级权限suid
、sgid
和sticky
,以及如何设置它们。find命令可以在指定目录及其子目录中查找符合指定条件的文件或目录,并将结果输出到终端。通过对命令语法和常用示例的介绍,可以更好地了解和运用find命令。