find命令查找单个文件
find查找目录-name查找名称其中查找名称可以包含文件名,目录名等,也可以是正则表达式;
如下命令,查找当前目录.所有名为Makefile的文件
[root@localhost redis-6.2.10]# find . -name Makefile
./Makefile
./deps/Makefile
./deps/hdr_histogram/Makefile
./deps/hiredis/Makefile
./deps/linenoise/Makefile
./deps/lua/Makefile
./deps/lua/etc/Makefile
./deps/lua/src/Makefile
./src/Makefile
./src/modules/Makefile
./tests/modules/Makefile
同时find命令支持正则表达式,在记不住某个文件具体的名称时,可以尝试一下正则表达式。
诸如模糊记得redisbench关键字linux运维面试题,查找对应的文件命令如下
[root@localhost redis-6.2.10]# find . -name redis*bench*
./src/redis-benchmark.c
./tests/integration/redis-benchmark.tcl
依照文件属性查找
查找名称为src的所有目录
[root@localhost redis-6.2.10]# find . -type d -name src
./deps/jemalloc/src
./deps/jemalloc/test/src
./deps/lua/src
./src
-type指定如下不同的属性:
字符涵义
普通文件,例如源码文件
directory目录的首字母
link软联接
块文件
字符文件
查找775权限的普通文件
[root@localhost redis-6.2.10]# find . -type f -perm 775
./deps/hiredis/test.sh
./deps/jemalloc/autogen.sh
./deps/jemalloc/build-aux/config.guess
后面也可以使用非!字符linux find命令参数,表示完全相反的结果
find . -type f ! -perm 775
表示不仅里面以外的所有文件集合。
查找文件内容
有时侯须要查找某一类文件下边是否包含一些字符串linux游戏,例如查找.h文件上面16384这个字符串定义在那里,可以使用如下命令
[root@localhost redis-6.2.10]# find . -name "*.h" -exec grep -rin '16384' {} -H ;
./src/cluster.h:8:#define CLUSTER_SLOTS 16384
可以看见显示出linux find命令参数,16384这个字符串出现在./src/cluster.h文件对应的第8行。
具体命令句型如下:
find PATH OPTIONS -exec command {} ;
其中-exec参数表示须要执行前面的命令;{}表示find上面匹配到的文件,里面命令表示匹配到的以.h结束的文件,一般是C、C++语言的头文件;;表示exec须要执行的命令结束;-H表示复印出文件对应的路径./src/cluster.h.
按照文件大小查找
find命令查找固定大小的文件查找文件大小为25k的所有文件
find / -size 25k
find命令按照文件大小进行查找如下命令查找小于50M大于100M的文件内容
[root@localhost redis-6.2.10]# find / -size +50M -size -75M;
/boot/initramfs-0-rescue-90ed5856874646f8a1a55cd0e215e036.img
/root/code/gdb/gdb-8.0.1/gdb/gdb
/var/lib/rpm/Packages
/usr/local/bin/gdb
这个功能可以常见拿来删掉服务器里面的日志例如删掉日志文件小于512M的命令
[root@localhost test]# dd if=/dev/zero of=test.log bs=1M count=1024
记录了1024+0 的读入
记录了1024+0 的写出
1073741824字节(1.1 GB)已复制,0.221883 秒,4.8 GB/秒
[root@localhost test]# ls -lh
总用量 1.0G
-rw-r--r--. 1 root root 1.0G 5月 13 15:33 test.log
[root@localhost test]# find . -type f -name "*.log" -size +512M -exec rm {} ;
[root@localhost test]# ll
总用量 0
按照文件更改时间
近来一个小时文件数据更改的时间
[root@localhost test]# find / -mmin -60
具体的几个参数涵义如下:
参数名涵义
atimen
近来n个小时访问文件
aminn
近来n分钟访问文件
ctimen
近来n小时文件状态信息的更改,主要是inode节点信息
cminn
近来n分钟文件状态信息的更改,主要是inode节点信息
mtimen
近来n小时,文件内容的更改
mmimn
近来n分钟,文件内容的更改