Linux中的Find指令是Linux系统中很重要也是很棒的指令之一,功能非常得强大。下面我根据实例代码向大家分享find指令。由于博客上无法贴出Linux代码,我就在截图中体现出代码,以及效果。
我先自己创建了文件名的test.c的普通文件,我们用指令mkdir,以及ls查看已经创建了test.c.
现在我们查找它。
- 根据文件名或者正则表达式查找:-name 通过文件名字查找
文件名:
1)find ./ -name test.c 查找文件名为test.c的文件
2)find 。/ -name ‘test.c*‘ 查找文件名包括test的文件
正则表达式:
1)find 用 “!”来否定参数 .
find ./ ! -name ‘*.c‘ -print 查找文件名不为.c的文件,并打印出来。(实际后面的-print可要可不要,效果都会显示在屏幕上)
2)如果想匹配多个条件中的一个,可以使用-o参数。
-a 与条件
-o 或条件
-not 非条件(此参数的功能类似于否定参数‘!’)
2.根据文件大小查找
通过-size选项可以通过文件大小查找文件。
-size n:[c] 查找文件长度为n块的文件,带有c时表示文件长度以字节计。
b——块(512字节); c——字节; w——字(2字节);
k——千字节 ; M——兆字节; G——吉字节。
1)find ~ -size +100k 查找比100k大的文件
2)find ~ -size -100k 查找比100k小的文件
3)find ~ -size 100k 查找大小为100k的文件
注意: – 指比给定尺寸小,+ 指比给定尺寸大。没有符号代表和给定尺寸完全一样大。
3.根据文件深度查找
使用mimdepth,maxdepth限定搜索指定目录的深度。
-depth:在查找文件时,首先先查找当前的目录中的文件,然后在其子目录中查找。
1)find ./ -name test 在root目录以及子目录下查找文件名为test的文件
2)find -maxdepth 2 -name test 在root目录以及深度为1的子目录中查找文件名为test的文件
3)find -mindepth 1 -maxdepth -name test 在深度为0的子目录以及深度为5的子目录中查找文件名为test的文件
4.根据文件权限查找文件
-perm 按照文件的权限来查找文件。
1)find -perm -g=w 找到具有组读权限的文件
5.根据文件类型查找文件。
-type 查找某一类型的文件。诸如:
文件类型 类型参数
普通文件 f
符号文件 l
目录 d
字符设备 c
块设备 b
套接字 s
管道文件 p
1)find
. -
type
d 查找类型为目录的文件
其他类型的文件就可以按照上述命令来查找了。
6.根据文件时间来查找
Linux文件系统中每一个文件都有三种时间戳
访问时间(-atime):用户最近一次访问文件的时间;
修改时间(-mtime):文件内容最后一次被修改的时间。
变化时间(-ctime):文件元数据(metadata,例如权限或所有权)最后一次改变的时间。
-atime,-mtime,-ctime作为时间参数,单位是天。可以使用+表示大于,-表示小于(和根据文件的大小查找中的+,-相同)。
1)find ./ -mtime -5 查找小于等于5天内修改过的文件
2)find ./ -mtime +2 查找大于2天前修改过的文件
3)find ./ -mtime 1 查找1天前,当天修改过的文件
4)find ./ -newer test.c 查找比test.c还要新的文件