#yyds干货盘点#Linux 命令 - find
source link: https://blog.51cto.com/u_11365839/6868790
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
什么是 find 命令?
find
命令用于在指定的目录下搜索文件和目录。它提供了丰富的搜索条件和选项,可以根据文件名、文件类型、文件大小、修改时间等属性进行搜索。find
命令通常用于查找特定文件或根据条件进行批量操作。
find命令通常进行的是从根目录 /
开始的全盘搜索,所以不要在高峰时期使用 find
命令。
如何使用 find 命令?
find
命令的使用相对较复杂,但掌握了基本语法后,你就能灵活使用它。
基本语法:
find 目录路径 [选项参数] [搜索条件]
- 目录路径:指定要查找的目录路径。
- 选项参数:用于指定匹配条件,例如文件名、类型。
- 搜索条件:用于指定要搜索的文件和目录,满足这个条件的就会被搜索出来。
假设我们想找到在 /opt/games
目录下所有以 .txt
扩展名结尾的文件,则可以使用以下命令:
find /opt/games -name "*.txt"
这将在 /opt/games
目录及其子目录中搜索所有以 .txt
结尾的文件,并将它们列出。
如果要在当前目录及其子目录中查找所有以 .txt
结尾的文本文件,则可以使用以下命令:
find . -name "*.txt"
常用选项参数
-name
:按文件名进行匹配。-type
:按文件类型进行匹配。-size
:按文件大小进行匹配。-user
:按文件所属用户进行匹配。-mtime
:(modified)按文件最后内容的修改时间进行匹配。-perm
:(permission)按文件权限进行匹配。-exec
:(execute)对搜索的结果执行命令。
- 搜索
/home
目录及其子目录中包含god23bin
结尾的目录和文件:
find /home -name "*god23bin*"
- 搜索
/opt/games
目录下的所有类型为目录的文件(注意:目录也是一种特殊的文件)
find /opt/games -type d
-type
后面可以使用的类型:
d
:目录f
:文件l
:符号链接(软链接)
- 查找
/boot
目录及其子目录下所有大小大于 1MB 的文件:
find /boot -size +1M
-size
后面的搜索条件写法:
-100c
:小于 100B 的文件+10k
:大于 10KB 的文件-5M
:小于 5MB 的文件+2G
:大于 2GB 的文件- 以此类推,
-
表示小于,+
表示大于,或者直接指定大小
-size [+-]size[cwbkMG]
:按文件大小查找,支持使用+
或-
表示大于或小于指定大小,单位可以是c
(字节)、w
(字数)、b
(块数)、k
(KB)、M
(MB)或G
(GB)
- 查找
/home
目录及其子目录下所有属于 god23bin 这个用户的文件(目录):
find /home -user god23bin
- 搜索
/opt
目录及其子目录下最近 7 天内发生过修改的文件(目录):
find /opt -mtime -7
-7
代表 7 天内,那么自然而然,+7
代表 7 天之前:
find /opt -mtime +7
-mtime [+-]days
:按修改时间查找,支持使用+
或-
表示在指定天数前或后,days 是一个整数表示天数。
按权限进行匹配
这里先说下,-perm
后面的内容使用数字或符号来表示文件权限,举个例子 /u+rw
,这里的 /u
表示用户(所有者)权限,rw
表示具有读写权限,中间的 +
用来表示「具有」
还有其他几个字母:
/g
,组(group)权限;/o
,(other)其他用户权限;/a
,(all)所有用户权限。读写可执行:
r
(read),w
(write),x
(execute)
-
表示没有:比如/u-rw
,指用户没有读写权限
- 搜索当前目录及其子目录下所有具有读写权限的文件(目录):
find /opt -perm /u+rw
- 搜索当前目录及其子目录下其他用户具有读写权限的目录:
find /opt -type d -perm /o+rw
对搜索的结果执行命令
-exec
选项参数可以对搜索到的结果执行特定的命令。
- 搜索
/opt/games/gta6
目录下的所有 txt 文件,将这些文件复制到/opt/games/gta6/backup
目录下:
find /opt/games/gta6 -name "*.txt" -exec cp {} /opt/games/gta6/backup \;
注意:
-exec
参数需要使用\;
作为命令的结尾
- 删除
/opt/games/gta6/backup
目录下匹配的 txt 文件:
find /opt/games/gta6/backup -name "*.txt" -exec rm {} \;
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK