find、locate:查找文件命令
locate:非实时,模糊匹配,速度快,查找是根据全系统文件数据库进行的;如果刚装系统用locate查找文件,需使用updatedb, 手动生成文件数据库才可使用
find:实时、精确、支持众多查找标准、遍历指定目录中的所有文件完成查找,速度慢
find 查找路径 查找标准 查找到以后的处理运作 (find后必须先跟路径,否则报错)
查找路径:默认为当前目录
查找标准:默认为指定路径下的所有文件
处理运作:默认为显示
匹配标准:
-name 'FILENAME':对文件名作精确匹配
文件名通配:
*:任意长度的任意字符
?
[]
-iname 'FILENAME': 文件名匹配时不区分大小写
-regex PATTERN:基于正则表达式进行文件名匹配
-user USERNAME: 根据属主查找
-group GROUPNAME: 根据属组查找
-uid UID: 根据UID查找
-gid GID: 根据GID查找
-nouser:查找没有属主的文件
-nogroup: 查找没有属组的文件
-type :f 普通文件 d c b l p s
-size [+|-] #k #M #G
find . -siez +1k -type f #查找当前目录下大于1k的文件
组合条件:
-a 且
-o 或
-not 非 等同 !
find . ! \( -user modys -a -type d \) #查找当前目录下**不是**属主为modys并且为目录的文件
-mtime 修改时间 天 [+|-]#
-ctime 改变时间 天
-atime 访问时间 天
find /home/modys -mtime +5 -name "*.txt" #查找modys目录下5天之前修改的txt文件
-mmin 修改时间 分钟 [+|-]#
-cmin 改变时间 分钟
-amin 访问时间 分钟
find . /home/modys -amin +60 #查找modys目录下60分钟之前访问的所有文件
-perm MODE:精确匹配
/MODE: 任意一位匹配即满足条件
-MODE: 文件权限能完全包含此MODE时才符合条件
find . -perm -002 -type f #查找当前目录下其他用户有可执行权限的普通文件
查找后可执行的动作:
-print: 显示
-ls:类似ls -l的形式显示每一个文件的详细
-ok COMMAND {} \; 每一次操作都需要用户确认
-exec COMMAND {} \;
find . -perm -002 -type f -exec mv {} {}.py \; #查找出来后并且重命名为.py
find . -name '*.sh' -a -perm -111 ok chmod o-x {} \; #找出当前目录下所有.sh结尾并且都有执行权限的文件,然后去掉其他用户的执行权限
find . -name '*.sh' -a -perm -111 | xargs chmod o-x #命令效果同上