find命令

1.按名称查找:-name
  1.1 确定文件名:find 【目录】 -name 【文件名】

    举🌰:在当前目录及其子目录下查找test.txt文件:find ./ -name test.txt

  1.2 文件名模糊查找

    举🌰:在当前目录及其子目录下查找以test开头的文件:find ./ -name "test*"。注意: 一定要加引号,https://blog.csdn.net/wgl307293845/article/details/109616467

2.按照类型查找:-type
  2.1 文件f

    举🌰:查找当前目录的所有文件:find ./ -maxdepth 1 -type f

  2.2 目录d

    举🌰:查找当前目录的所有目录:find ./ -maxdepth 1 -type d

3.指定目录层次:-maxdepth -mindepth
  3.1 举🌰,只在当前目录查找:find ./ -maxdepth 1 -name "test*"

  3.2 举🌰,在当前目录的第二层和第三层目录查找:find ./ -mindepth 2 -maxdepth 3 -name "test*"

  3.3 举🌰,在当前目录和下一层目录查询:find ./ -maxdepth 2 -name "test*"

4.按照文件拥有者、拥有组查找:-user -group
  4.1 拥有者(前面的)

    举🌰:查找当前以及子目录用户是的root所有文件:find ./ -user root

  4.2 拥有组(后面的)

    举🌰:查找当前以及子目录用户是root的所有文件:find ./ -group root

5.多个条件查找:-a 与;-o 或;-not 非
  5.1 举🌰,在当前及子目录查找用户是xiaoqiang,用户组是root的文件:find ./ -type f -a -user xiaoqiang -a -group root 。注意:-a 可省略,默认是且的关系

  5.2 举🌰,在当前目录查找用户是xiaoqiang或是root的文件:find ./ -maxdepth 1 -type f -user xiaoqiang -o -user root 。 注意:当有多个条件时,-maxdepth放在最前面,-type/-name 次之,然后是其他条件

6.按文件大小查找:-size
  6.1. 20M表示大小正好是20M;-20M表示小于20M;+20M表示大于20M

    举🌰:在当前及子目录中查询小于20M的文件:find ./ -size -20M

7.按照修改时间查找: -cmin
  7.1 1表示修改时间为1min的文件,-1表示在1min之内修改的文件,+1表示修改时间超过1min的文件;cmin中单位是分钟,ctime单位是天

    举🌰: 在当前及子目录中查找修改时间不超过10分钟的文件 find ./ -type f -cmin -10

  参数区别:

  amin表示访问时间,

  cmin表示文件状态被修改时间,如通过chmod修改文件属性,cmin就会被修改

  mmin表示文件内容被修改的时间。

  相应的有atime、ctime、mtime

8.执行动作,对查找出来的文件执行动作:-exec command ;
  8.1 主要上述命令最后有分号,分号是用来给find做标记用的,find在解析命令的时候,要区分给定的参数是要传给自己的还是要传给command命令的,所以find以分号作为要执行命令所有参数的结束标记;

    举🌰find ./ -maxdepth 1 -type f -group root -exec chown xiaoqiang:xiaoqiang {} \; 查找当前目录 用户组是root的文件,并将其用户:用户组修改为xiaoqiang:xiaoqiang

  解释:{} 表示find查找的结果;最后的分号表示传给-exec commond命令参数到此结束;\ 用来转义最后的分号,因为分号也是bash的特殊字符,所以bash会先解释它,前面加上\就可以让bash直接将其传递给find命令,使这个分号由find解释,而不是    bash。

posted @ 2022-04-16 16:15  Katsu  阅读(3730)  评论(0编辑  收藏  举报