ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
## find ~~~ find 查找路径 查找标准 查找后进行的处理动作 ~~~ * 查找路径:默认为当前目录 * 查找标准:默认为指定路径下的所有文件 * 处理动作:默认为显示 ### 查找标准 ~~~ -name “FILENAME“: 对文件名进行精确匹配 -iname “FILENAME”: 对文件名进行匹配,不区分大小写 -regex PATTERN: 基于正则表达式进行文件查找 -iregex PATTERN: 基于正则表达式进行文件查找(不区分大小写) -user USERNAME: 基于文件的属主进行查找 -group GROUPNAME: 基于文件的属组进行查找 -uid UID: 基于文件的UID进行查找 -gid GID: 基于文件的GID进行查找 注意:删除一个用户,属于这个用户属主文件将只保留UID号 -nouser: 没有属主 -nogroup: 没有属组 -type: 指定文件类型 f d -maxdepth: 指定搜索深度 ~~~ ~~~ -size:指定文件大小 [+|-] 10k [+|-] 10M [+|-] 10g ~~~ >find -size 10k 显示大于9k小于等于10k的文件 对文件时间的查找 ~~~ # 单位为天 -atime -mtime -ctime # 单位为分钟 -amin -mmin -cmin ~~~ 对文件权限进行查找 ~~~ -perm MOOD精确匹配 -perm -MOOD文件权限完全包含MOOD才匹配 -perm /MOOD任意一位匹配即可 ~~~ 组合查找 ~~~ -a:默认,可省 -o:或者 -not:非 ~~~ ### 处理动作 ~~~ -print:显示(默认) -print0:不换行显示, 这样就可以搜索包含空格的文件; -print的定界符 -ls:类似于ls -l -ok COMMAND {} \;每一次操作都需要用户确认 例子:find -atime +5 -ok mv {} {}.old \; -exec COMMAND {} \;不需要用户确认 例子:find -atime +2 -exec mv {} {}.old \; {}文件名占位符 -path PATH :指定路径 -prune:删除,不显示 ~~~ 除去某一路径 ~~~ find /usr/sam -path "/usr/sam/dir1" -prune -o -print find [PATH EXPREESION]-a [PATH EXPREESION] -a [PATH EXPREESION] -o [PATH EXPREESION] find /root/testfind/ \( -path /root/testfind/a -o -path /root/testfind/b \) -prune -o -print ~~~ #### 练习 ~~~ 1、查找/var目录下属主为root并且属组为mail的所有文件; find /var -user root -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 ~~~