欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

一天一个Linux命令--find

程序员文章站 2024-01-13 19:01:52
文件查找:(以find为主) which:查找命令字所在的位置 locate:模糊匹配(只要包含关键字的文件都查找出来) 不是实时的,基于数据库查找, updatedb升级locate数据库 查找速度特别快 find:查看文件或目录的工具 实时查找 精确查找 遍历整个指定目录中的文件,速度很慢 支持 ......

文件查找:(以find为主)
  which:查找命令字所在的位置
  locate:模糊匹配(只要包含关键字的文件都查找出来)
         不是实时的,基于数据库查找, updatedb升级locate数据库
         查找速度特别快

  find:查看文件或目录的工具
       实时查找
       精确查找
       遍历整个指定目录中的文件,速度很慢
       支持多种查找条件(属主,属组,权限,文件名等)
       语法: find [find_path] [条件] [处理动作]
       find_path:如果不写,默认在当前工作目录查找
       条件:如果不写,会查找出该路径下所有的文件处理动作:默认打印到屏幕上 print

    条件:(匹配标准)

       -name file_name:根据文件名进行查找,区分大小写
       -iname file_name:根据文件名进行查找,不区分大小写
       -regex pattern:根据正则表达式的模式进行查找
       -user:通过属主进行查找
       -group:通过属组进程查找
       -uid uid:通过uid号进行查找
       -gid gid:通过gid号进行查找
       -nouser:查找没有属主的文件
       -nogroup:查找没有属组的文件
       -type:根据文件类型进行查找
       -b:块设备
       -c:字符设备
       -d:目录
       -f:文件
       -p:命名管道
       -s:套接字文件
       -l:链接文件
       -size [+ | -] k m g
       -size 5k:精确匹配
       +:大于
       -:小于

 


       根据时间戳进行查找: # stat file_name  //查看文件的时间戳
       

         -atime:时间单位为天,access时间
         -mtime:时间单位为天,modify时间
         -ctime:时间单位为天,change时间
         -mmin:时间单位为分钟,modify时间
         -amin:时间单位为分钟,access时间
         -cmin:时间单位为分钟,change时间

 


       根据权限查找:
         -perm mode:
               mode:644,精确匹配
               /mode:任意一位匹配
               -mode:文件权限能够完全包含此mode时才能匹配

       条件组合:
         -a:同时满足多个条件,比如查找属主是tom并且权限为644的文件
         -o:满足一个条件即可,比如查找属主是tom或者权限为包含644的文件
         -not:不满足条件的被查找出来

       出来动作:
         -print:默认动作,默认查找结果打印到屏幕
         -ls:默认以类似于ls -l的形式显示结果的信息
         -ok command {} \;执行动作时提示用户是否执行,必须以\;结尾,{}代表文件名占位符
         -exec command {} \;执行动作时不提示用户直接执行,必须以\;结尾,{}代表文件名占位符


    查找条件通配符:
 *:通配任意个数的任意字符  

# find /etc/ -name "pass*"

# find /etc/ -name "*pass"
?:通配单个的任意字符     

 # find /etc/ -name "passw*"


1、查找/var目录下属主为root并且属组为mail的所有文件;

find /var -user root -a -group mail


2、查找/usr目录下不属于root,bin,或student的文件;

find /usr -not -user root -a -not -user bin -a -not -user student
find /usr -not \( -user root -o -user bin -o -user student \)


3、查找/etc目录下最近一周内内容修改过且不属于root及student用户的文件;

find /etc -mtime -7 -not \ ( -user root -o -user student \)
find /etc -mtime -7 -not -user root -a -not -user student

 


4、查找当前系统上没有属主或属组且最近1天内曾被访问过的文件,并将其属主属组均修改为root;

find / \( -nouser -o -nogroup \) -a -atime -1 -exec chown root:root {} \; 



5、查找/etc目录下大于1m的文件,并将其文件名写入/tmp/etc.largefiles文件中;

find /etc -size +1m >> /tmp/etc.largefiles



6、查找/etc目录下所有用户都没有写权限的文件,显示出其详细信息;

find /etc -not -perm /222 -ls