前言:
现在看官们对“centos中find”大概比较关注,兄弟们都想要剖析一些“centos中find”的相关文章。那么小编同时在网摘上搜集了一些关于“centos中find””的相关内容,希望同学们能喜欢,兄弟们一起来学习一下吧!概述
find命令常用于查找特定文件,本期文章结合实际场景向各位小伙伴总结分享它的使用方法。
Tips:
测试操作系统:CentOS 8;
文件属性有哪些
Find命令可基于文件属性查找特定文件,因此,知悉文件属性也就顺理成章了。那么文件属性有哪些呢?一张图展示即可,如下图所示;
场景1:基于文件的类型标识查找文件
例如,查找/var/log/目录下,普通文件、链接文件和目录文件;
Tips:默认递归查找到该目录的子目录
#查找普通文件
[root@localhost ~]# find /var/log/ -type f
#查找链接文件
[root@localhost ~]# find /var/log/ -type l
#查找目录文件
[root@localhost ~]# find /var/log/ -type d
场景2:基于文件的权限分配查找文件
首先,创建一些不同用户权限的文件,如下图所示;
命令1:find -perm 220 -type f
命令1释义:在当前目录及子目录查找普通类型的文件,并且,该文件的权限需符合“文件所有者和文件所属组都具有“写”权限,其它用户无权限,符合这些条件但设置了其他权限位的文件(例如,如果有人可以执行该文件)将不匹配”的要求。
[root@localhost f_test]# find -perm 220 -type f
./f_220
[root@localhost f_test]#
命令2:find -perm -220 -type f
命令2释义:在当前目录及子目录查找普通类型的文件,并且,该文件的权限需符合“文件所有者和文件所属组都具有“写”权限,其它用户无权限,不考虑是否存在任何额外的权限位(例如可执行位)。例如,这将匹配具有模式0777的文件”的要求。
[root@localhost f_test]# find -perm -220 -type f
./f_664
./f_665
./f_220
./f_223
./f_222
./f_777
[root@localhost f_test]#
命令3:find -perm -222 -type f
命令3释义:在当前目录及子目录查找普通类型的文件,并且,该文件的权限需符合“文件所有者和文件所属组都具有“写”权限,其它用户具有“写”权限,不考虑是否存在任何额外的权限位(例如可执行位)”的要求。
[root@localhost f_test]# find -perm -222 -type f
./f_223
./f_222
./f_777
[root@localhost f_test]#
命令4:find -perm /220 -type f
命令4释义:当前目录及子目录查找普通类型的文件,并且,该文件的权限需符合“文件所有者或文件所属组具有“写”权限”的要求。
[root@localhost f_test]# find -perm /220 -type f
./f_664
./f_665
./f_202
./f_220
./f_223
./f_222
./f_777
[root@localhost f_test]#
命令5:find -perm /222 -type f
命令5释义:在当前目录及子目录查找普通类型的文件,并且,该文件的权限需符合“文件所有者或文件所属组或其它用户具有“写”权限”的要求。
[root@localhost f_test]# find -perm /222 -type f
./f_664
./f_665
./f_102
./f_202
./f_220
./f_223
./f_222
./f_777
[root@localhost f_test]#
命令6:find -type f -perm -444 -perm /222 ! -perm /111
命令6释义:在当前目录及子目录查找普通类型的文件,并且,该文件的权限需符合“文件所有者、文件所属组和其它用户都具有“读”权限并保证任意用户具有“写”权限而不具有“执行”权限”的要求。
[root@localhost f_test]# find -type f -perm -444 -perm /222 ! -perm /111
./f_664
[root@localhost f_test]#
场景3:基于文件的大小查找文件
首先,创建一些不同大小的文件,如下图所示;
命令1:find -type f -size 108M | xargs ls –lh
命令1释义:在当前目录及子目录查找普通类型的文件,并且,该文件的大小是“108MB”。
[root@localhost f_test]# find -type f -size 108M | xargs ls -lh
--w------- 1 root root 108M Jun 26 13:05 ./108/f_222
--w--w--w- 1 root root 108M Jun 26 11:41 ./f_222
[root@localhost f_test]#
命令2:find -type f -size +1G | xargs ls -lh
命令2释义:在当前目录及子目录查找普通类型的文件,并且,该文件的大小“大于1GB”。
[root@localhost f_test]# find -type f -size +1G | xargs ls -lh
-rwxrwxrwx 1 root root 1.6G Jun 26 11:39 ./f_777
[root@localhost f_test]#
命令3:find -type f -size +3c -size -20k | xargs ls -lh
命令3释义:在当前目录及子目录查找普通类型的文件,并且,该文件的大小“大于3字节小于20KB”。
[root@localhost f_test]# find -type f -size +3c -size -20k | xargs ls -lh
---x----w- 1 root root 12K Jun 25 16:36 ./f_102
-rw-r--r-- 1 root root 4 Jun 26 11:29 ./f_111
--w-----w- 1 root root 11K Jun 26 08:56 ./f_202
[root@localhost f_test]#
命令4:find -type f -size +60M | xargs du -hm | sort -rn
命令4释义:在当前目录及子目录查找普通类型的文件,并且,该文件的大小“大于60MB”。根据查找到符合条件的文件,再次查询获取文件的大小并按照倒序的方式显示。
[root@localhost f_test]# find -type f -size +60M | xargs du -hm | sort -rn
1627 ./f_777
139 ./f_665
108 ./f_222
108 ./108/f_222
[root@localhost f_test]#
场景4:基于文件的名字查找文件
命令1:find -type f -name "*222"
命令1释义:在当前目录及子目录查找普通类型的文件,并且,该文件名尾包含信息 “222”。
[root@localhost f_test]# find -type f -name "*222"
./f_222
./108/f_222
[root@localhost f_test]#
命令2:find -type f -name "?_222"
命令2释义:在当前目录及子目录查找普通类型的文件,并且,该文件名头匹配一个字符并包含信息 “_222”。
[root@localhost f_test]# find -type f -name "?_222"
./f_222
./108/f_222
[root@localhost f_test]#
命令3:find -type f -name "[0-9]*"
命令3释义:在当前目录及子目录查找普通类型的文件,并且,该文件名头包含信息 “数字”。
[root@localhost f_test]# find -type f -name "[0-9]*"
./1111.txt
[root@localhost f_test]#
命令4:find -type f -name "[a-z]*"
命令4释义:在当前目录及子目录查找普通类型的文件,并且,该文件名头包含信息 “字母”。
[root@localhost f_test]# find -type f -name "[a-z]*"
./f_664
./f_665
./f_102
./f_010
./f_202
./f_220
./f_223
./f_222
./f_777
./f_111
./108/f_222
./abc.c
[root@localhost f_test]#
命令5:find -type f -name \*
命令5释义:在当前目录及子目录查找所有普通类型的文件。
[root@localhost f_test]# find -type f -name \*
./f_664
./f_665
./f_102
./f_010
./f_202
./f_220
./f_223
./f_222
./f_777
[root@localhost f_test]#
场景5:基于文件创建的时间查找文件
当前时间点,如下所示;
[root@localhost log]# date
Mon Jun 26 15:20:32 CST 2023
[root@localhost log]#
命令1:find -type f -name "vmware-network*" -mtime +30 | xargs ls -l
命令1释义:在/var/log/目录及子目录查找普通类型的文件,并且,该文件名头包含信息 “vmware-network”且该“文件内容”30天前被修改。
[root@localhost log]# find -type f -name "vmware-network*" -mtime +30 | xargs ls -l
-rw------- 1 root root 719 May 25 13:07 ./vmware-network.2.log
-rw-------. 1 root root 719 May 25 10:41 ./vmware-network.3.log
-rw-------. 1 root root 741 May 24 14:54 ./vmware-network.4.log
-rw-------. 1 root root 719 May 24 14:02 ./vmware-network.5.log
[root@localhost log]#
命令2:find -type f -name "vmware-network*" -mtime -30 | xargs ls -l
命令2释义:在/var/log/目录及子目录查找普通类型的文件,并且,该文件名头包含信息 “vmware-network”且该“文件内容”30天内被修改。
[root@localhost log]# find -type f -name "vmware-network*" -mtime -30 | xargs ls -l
-rw------- 1 root root 741 Jun 21 16:12 ./vmware-network.1.log
-rw------- 1 root root 719 Jun 25 09:42 ./vmware-network.log
[root@localhost log]#
场景6:基于文件所属者或所属组查找文件
命令1:find -type f -user test | xargs ls -l
命令1释义:在当前目录及子目录查找普通类型的文件,并且,该文件的所属者是test。
[root@localhost f_test]# find -type f -user test | xargs ls -l
-rw-r--r-- 1 test root 4 Jun 26 11:29 ./f_111
-rwxrwxrwx 1 test Test 1705703150 Jun 26 11:39 ./f_777
[root@localhost f_test]#
命令2:find -type f -group Test | xargs ls -l
命令2释义:在当前目录及子目录查找普通类型的文件,并且,该文件的所属组是Test。
[root@localhost f_test]# find -type f -group Test | xargs ls -l
--w--w--w- 1 root Test 112539936 Jun 26 11:41 ./f_222
-rwxrwxrwx 1 test Test 1705703150 Jun 26 11:39 ./f_777
[root@localhost f_test]#
总结
结合具体的使用场景详细说明了find命令的使用方法,其它用法可通过命令man find查看。以上分享,希望各位小伙伴有所收获,欢迎各位点赞收藏和指正。
标签: #centos中find