5

#yyds干货盘点#Linux 命令 - find

 1 year ago
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.
neoserver,ios ssh client

什么是 find 命令?

find 命令用于在指定的目录下搜索文件和目录。它提供了丰富的搜索条件和选项,可以根据文件名、文件类型、文件大小、修改时间等属性进行搜索。find 命令通常用于查找特定文件或根据条件进行批量操作。

find命令通常进行的是从根目录 / 开始的全盘搜索,所以不要在高峰时期使用 find 命令。

如何使用 find 命令?

find 命令的使用相对较复杂,但掌握了基本语法后,你就能灵活使用它。

基本语法:

find 目录路径 [选项参数] [搜索条件]
  • 目录路径:指定要查找的目录路径。
  • 选项参数:用于指定匹配条件,例如文件名、类型。
  • 搜索条件:用于指定要搜索的文件和目录,满足这个条件的就会被搜索出来。

假设我们想找到在 /opt/games 目录下所有以 .txt 扩展名结尾的文件,则可以使用以下命令:

find /opt/games -name "*.txt"

这将在 /opt/games 目录及其子目录中搜索所有以 .txt 结尾的文件,并将它们列出。

#yyds干货盘点#Linux 命令 - find_子目录

如果要在当前目录及其子目录中查找所有以 .txt 结尾的文本文件,则可以使用以下命令:

find . -name "*.txt"
#yyds干货盘点#Linux 命令 - find_子目录_02

常用选项参数

  • -name:按文件名进行匹配。
  • -type:按文件类型进行匹配。
  • -size:按文件大小进行匹配。
  • -user:按文件所属用户进行匹配。
  • -mtime:(modified)按文件最后内容的修改时间进行匹配。
  • -perm:(permission)按文件权限进行匹配。
  • -exec:(execute)对搜索的结果执行命令。
  1. 搜索 /home 目录及其子目录中包含 god23bin 结尾的目录和文件:
find /home -name "*god23bin*"

#yyds干货盘点#Linux 命令 - find_子目录_03

  1. 搜索 /opt/games 目录下的所有类型为目录的文件(注意:目录也是一种特殊的文件
find /opt/games -type d
#yyds干货盘点#Linux 命令 - find_文件大小_04

-type 后面可以使用的类型:

  • d:目录
  • f:文件
  • l:符号链接(软链接)
  1. 查找 /boot 目录及其子目录下所有大小大于 1MB 的文件:
find /boot -size +1M
#yyds干货盘点#Linux 命令 - find_子目录_05

-size 后面的搜索条件写法:

  • -100c:小于 100B 的文件
  • +10k:大于 10KB 的文件
  • -5M:小于 5MB 的文件
  • +2G:大于 2GB 的文件
  • 以此类推,- 表示小于,+ 表示大于,或者直接指定大小

-size [+-]size[cwbkMG]:按文件大小查找,支持使用 + 或 - 表示大于或小于指定大小,单位可以是 c(字节)、w(字数)、b(块数)、k(KB)、M(MB)或 G(GB)

  1. 查找 /home 目录及其子目录下所有属于 god23bin 这个用户的文件(目录):
find /home -user god23bin
#yyds干货盘点#Linux 命令 - find_子目录_06
  1. 搜索 /opt 目录及其子目录下最近 7 天内发生过修改的文件(目录):
find /opt -mtime -7
#yyds干货盘点#Linux 命令 - find_子目录_07

-7 代表 7 天内,那么自然而然,+7 代表 7 天之前:

find /opt -mtime +7
#yyds干货盘点#Linux 命令 - find_文件大小_08

-mtime [+-]days:按修改时间查找,支持使用 + 或 - 表示在指定天数前或后,days 是一个整数表示天数。

按权限进行匹配

这里先说下,-perm 后面的内容使用数字或符号来表示文件权限,举个例子 /u+rw,这里的 /u 表示用户(所有者)权限,rw 表示具有读写权限,中间的 + 用来表示「具有」

还有其他几个字母:/g,组(group)权限;/o,(other)其他用户权限;/a,(all)所有用户权限。

读写可执行:r(read),w(write),x(execute)

- 表示没有:比如 /u-rw,指用户没有读写权限

  1. 搜索当前目录及其子目录下所有具有读写权限的文件(目录):
find /opt -perm /u+rw
#yyds干货盘点#Linux 命令 - find_搜索_09
  1. 搜索当前目录及其子目录下其他用户具有读写权限的目录:
find /opt -type d -perm /o+rw
#yyds干货盘点#Linux 命令 - find_搜索_10

对搜索的结果执行命令

-exec 选项参数可以对搜索到的结果执行特定的命令。

  1. 搜索 /opt/games/gta6 目录下的所有 txt 文件,将这些文件复制到 /opt/games/gta6/backup 目录下:
find /opt/games/gta6 -name "*.txt" -exec cp {} /opt/games/gta6/backup \;

注意:-exec 参数需要使用 \; 作为命令的结尾

#yyds干货盘点#Linux 命令 - find_文件大小_11
#yyds干货盘点#Linux 命令 - find_搜索_12
  1. 删除 /opt/games/gta6/backup 目录下匹配的 txt 文件:
find /opt/games/gta6/backup -name "*.txt" -exec rm {} \;

#yyds干货盘点#Linux 命令 - find_子目录_13


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK