Linux学习命令汇总八——文件查找命令find选项及使用技巧

本章Blog相关Linux知识点



find与grep的不同点:

find为文件搜索命令——用来在指定目录下查找文件,而grep 为文本搜索命令——根据用户指定的文本模式对目标文件进行逐步搜索,显示能够被匹配的行 ;

find选项支持文件通配符,而grep选线支持正则表达式  ;

find查找为精确查找,精确匹配但搜索速度稍慢。

grep命令选项及正则表达式类型,详细请参考前文“Linux学习命令汇总三——Linux用户组管理,文件权限管理,文本搜索命令grep及正则表达式”  
bash特性之文件通配符,详细请参考前文“Linux学习命令汇总四——Bash中变量.文件通配符.管道与重定向.算术运算及循环或判断语句

find path -option [ -print ] [ -exec -ok command ] {} \;

path:查找路径,默认为当前目录

option:查找条件,默认为当前目录中的所有文件

[print] 或 [exec] :查找动作,默认为显示

find命令相关选项



find path -option [ -print ] [ -exec -ok command ] {} \;

[option]:

-name “文件名称”:支持文件通配符 例: # find  / -name httpd.conf  查找/ 目录中名称为httpd.conf 的文件

-iname “文件名称”:查找时不区分文件名称大小写

-user UserName :根据属主查找     # find /ftp -user hadoop 查找/ftp目录中用户为hadoop的文件

-group GroupName :根据属组查找

-uid UID :根据属主id号查找

-gid GID :根据属组gid号查找

-nouser :查找无属主的文件  # find /ftp -nouser

-nogroup :查找无属组的文件

-type { f | d | l | p | s | b | c  } :根据类型查找  例: # find /etc -type d  查找/etc/目录下类型为目录的文件并显示

-size [+|-] n[K|M|G] :根据文件大小查找  例:# find /var -size +2M

-atime [+|-] n:根据时间查找 [超过|少于] n天的被访问(access)的文件

-mtime [+|-] n:根据时间查找 [超过|少于] n天的被修改(modify)的文件

-ctime  [+|-] n:根据时间查找 [超过|少于] n天的被改变(change)的文件

-amin  -mmin  -cmin : 使用方式与 -atime -mtime -ctime 相似

-perm [+|-]  mode :

-perm 755  :表示严格匹配,也就是你的文件权限位转换成对应的十进制数字与mode一模一样,那么匹配成功 。

-perm - [mode] :表示mode中转换成二进制是1的二级制位在文件权限位里面必须匹配 。例: #find /var -perm  -355 , 查找的权限355 转换成二进制位011 101 101 ,判断文件权限转换成二级制为1的二进制位是否与权限中为1的二进制位相同 ,是0的位不管,满足则匹配,不满足则不匹配;如文件权限为111 101 111 ,011 111 101 等文件均可被匹配 ,而001 101 101 则不会被匹配 ,因为文件权限中第二个二进制位与查找的mode 第二位二进制为1的位不同。

   find -perm +mode : 与 -mode的区别是+mode只需其中的任意一个1的二进制位部分被匹配,+mode也不管0位。例: #find /var -perm  +355 , 查找的权限355 转换成二进制位011 101 101 ,如文件权限001 001 001 的文件可被匹配 ,而100 010 010 不会被匹配 ,因为无任何一个二进制位被匹配

处理动作:

-print :打印在标准输出上

-exec COMMAND {} \;   对查找到的文件执行指定的命令

-ok COMMAND {} \;    交互式的-exec

例: #find /tmp -perm -003 -exec ls -ld {} \;

组合条件:

-a :与,代表条件需同时满足,可省略

-o :或,代表条件满足一个即可

-not  或 ! : 非,取反

例:# find /usr/ -not -user root -a -not -user bin  -a -not -user hadoop   查找目录/usr/ 中属主不是root或bin或hadoop的文件

例:#
find /var/ -user root -group mail   查找/var目录中属主不是root且属组不是mail的文件

安全上下文



进程访问文件时的权限匹配机制:进程的属主,是否与文件的属主相同:如果相同,进程则以文件的属主属性运行;否则,进程的属主所属的组,是否其中之一与文件的属组相同;如果相同,进程则以文件的属组的权限运行;否则,进程则以文件的其他用户的权限来访问文件。

进程属主——进程的发起者

进程的属组——通常为进程的属主的基本组

文件权限:-rwsr-xr-x. 1 root root 30768 Feb 22  2012 /usr/bin/passwd

suid——可执行文件,任何用户执行此可执行程序时,不在以用户自己的身份当作进程的属主,而是以文件的属主当作进程的属主

sgid——具有sgid的目录,用户在此目录下创建文件时,新建文件的属组不在是用户的所属的基本组,而是目录的属组

sticky——粘滞位,对于公共可写的目录,用户可创建文件,可以删除自己的文件,但无法删除其他用户的文件

修改权限:

# chmod u+s file   设置文件suid权限

# chmod u-s file 取消文件suid权限

# chmod g+s directory 设置目录sgid权限

# chmod g-s directory  取消目录sgid权限

# chmod o+t directory  设置粘滞位权限

# chmod o-t  directory  取消粘滞位权限

练习1:复制cat 命令至/tmp 目录,普通用户使用/tmp/cat命令能查看root用户有权限查看的所有文件

[[email protected] ~]# cp /bin/cat /tmp/
[[email protected] ~]# chmod u+s /tmp/cat 
[[email protected] ~]# /tmp/cat /etc/issue
CentOS release 6.6 (Final)
Kernel \r on an \m

[[email protected] ~]# /tmp/cat /etc/redhat-release 
CentOS release 6.6 (Final)

练习2、新建/tmp/test目录,要求 openstack 和docker 用户对其有写权限,且在目录创建的文件的属组都为cloud组;要求每一个用户不能删除别人的文件,但可以编辑

[[email protected] ~]# mkdir /tmp/test
[[email protected] ~]# groupadd cloud
[[email protected] ~]# useradd openstack -g cloud
[[email protected] ~]# useradd docker -g cloud
[[email protected] ~]# chown :cloud /tmp/test
[[email protected] ~]# chmod o+t /tmp/test
[[email protected] ~]# chmod g+s /tmp/test/
[[email protected] ~]# ls -ld /tmp/test
drwxr-sr-t. 2 root cloud 4096 Mar 14 10:22 /tmp/test

本章知识点汇总



#find path -option [ -print ] [ -exec -ok command ] {} \;

[option]:

-name “文件名称”:支持文件通配符,查找匹配文件名的文件

-iname “文件名称”:查找时不区分文件名称大小写

-user UserName :根据属主查找

-group GroupName :根据属组查找

-uid UID :根据属主id号查找

-gid GID :根据属组gid号查找

-nouser :查找无属主的文件  # find /ftp -nouser

-nogroup :查找无属组的文件

-type { f | d | l | p | s | b | c  } :根据类型查找  例: # find /etc -type d  查找/etc/目录下类型为目录的文件并显示

-size [+|-] n[K|M|G] :根据文件大小查找  例:# find /var -size +2M

-atime [+|-] n:根据时间查找 [超过|少于] n天的被访问(access)的文件

-mtime [+|-] n:根据时间查找 [超过|少于] n天的被修改(modify)的文件

-ctime [+|-] n:根据时间查找 [超过|少于] n天的被改变(change)的文件

-amin  -mmin  -cmin : 使用方式与 -atime -mtime -ctime 相似

-perm [+|-]  mode :

# chmod u+s file   设置文件suid权限

# chmod u-s file 取消文件suid权限

# chmod g+s directory 设置目录sgid权限

# chmod g-s directory  取消目录sgid权限

# chmod o+t directory  设置粘滞位权限

# chmod o-t  directory  取消粘滞位权限

原文地址:http://blog.51cto.com/itwish/2090605

时间: 2024-10-12 21:15:33

Linux学习命令汇总八——文件查找命令find选项及使用技巧的相关文章

Linux常用命令二之文件查找命令

本文对Linux常用命令做一个总结,方便日后查阅. (1) which命令 我们经常在linux要查找某个文件,但不知道放在哪里了,可以使用下 面的一些命令来搜索: ? ? ? ?which??查看可执行文件的位置 ? ? ? ?whereis?查看文件的位置 ? ? ? ?locate???配合数据库查看文件位置 ? ? ? ?find???实际搜寻硬盘查询文件名称 which命令的作用是,在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一 个搜索结果.也就是说,使用which命

linux下find和locate文件查找命令详解

文件查找命令: locate命令特点 1.非实时,模糊匹配,查找是根据全系统文件数据库进行的: 2.updatedb, 手动更新生成文件数据库,默认第天凌晨4点02分更新数据库 3.速度快 find命令特点: 1.实时 2.精确 3.支持众多查找标准 4.搜索指定目录中的所有文件完成查找,但速度慢: 格式: find 查找路径 匹配标准 查找到以后的处理运作 查找路径:默认为当前目录 匹配标准:默认为指定路径下的所有文件 处理运作:默认为显示 匹配标准: -name '文件名':对文件名作精确匹

【linux学习笔记四】文件搜索命令

一 文件搜索 locate //在后台数据库中按文件名搜索 搜索速度更快 locate 文件名 //locate命令所搜索的后台数据库 /var/lib/mlocate //更新数据库 updatedb 二 命令搜索命令 whereis 与 which //搜索命令所在路径及帮助文档所在位置 whereis ls whereis -b 只查看可行性文件 whereis -m 只查找帮助文件 //除了所在位置 还可以查看文件别名 which 三 文件搜索 find //find [搜索范围] [搜

慕课linux学习笔记(八)常用命令(5)

解压缩命令 常用压缩格式 .zip .gz .bz2 .tar.gz .tar.bz2 zip [压缩文件名] [ 原文件 ] #压缩文件 -r [压缩文件名] [ 源目录] #压缩目录 -r [压缩文件名] [ 源目录] #压缩目录 Unzip [压缩包名] #解压缩 .gz格式 Gzip [原文件] #原文件会消失 Gzip -c [原文件] Gzip -r [目录] .gz格式解压缩 .bz2 格式 Bzip2 [原文件] #不能压缩目录,也不保留原文件 -k 可以保留原文件 Bzip2

linux下find(文件查找)命令的详解

文件查找命令locate和find详解 locate 配合数据库缓存,快速查看文件位置,非实时查找( 数据库查找) find 实际搜寻硬盘查询文件名称 ,实时查找 locate简介 locate命令其实是find -name的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库/var/lib/locatedb,这个数据库中含有本地所有文件信息.Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件.为了避免这种情况,可以在

linux下的find文件查找命令与grep文件内容查找命令

linux下的find文件查找命令与grep文件内容查找命令 在使用linux时,经常需要进行文件查找.其中查找的命令主要有find和grep.两个命令是有区的. 区别:(1)find命令是根据文件的属性进行查找,如文件名,文件大小,所有者,所属组,是否为空,访问时间,修改时间等. (2)grep是根据文件的内容进行查找,会对文件的每一行按照给定的模式(patter)进行匹配查找. 一.find命令 基本格式:find  path expression 1.按照文件名查找 (1)find / -

Linux 文件查找命令find,xargs详述

Linux文件查找命令find,xargs详述     <exec 后期讲解> 关于find命令 由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下.即使系统中含有网络文件系统( NFS),find命令在该文件系统中同样有效,只你具有相应的权限. 在运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系统可能会花费很长的时间(这里是指30G字节以上的文件系统). 一.find 命令格式 1.find命令的一般形式为:

Linux文件查找命令find,xargs详述

转自:http://www.linuxsir.org/main/node/137本文进行了整理修订 Linux文件查找命令find,xargs详述 摘要: 本文是find 命令的详细说明,可贵的是针对参数举了很多的实例,大量的例证,让初学者更为容易理解:本文是zhyfly兄贴在论坛中:我对本文进行了再次整理,为方便大家阅读: 目录 版权声明 前言:关于find命令 一.find 命令格式 1.find命令的一般形式为: 2.find命令的参数: 3.find命令选项: 4.使用exec或ok来执

find——文件查找命令 linux一些常用命令

find 命令eg: 一般文件查找方法: 1.  find /home -name file  ,  在/home目录下查找文件名为file的文件2.  find /home -name '*file*'  ,  在/home目录下查找文件名包含file的文件3.  find /home -name 'file*'  ,  在/home目录下查找以file开头的文件名的文件4.  find /home -size 512c  ,    在/home目录下查找512kb大小的文件5.  find