21篇测试必备的Linux常用命令,每天敲一篇,每次敲三遍,每月一循环,全都可记住!!
https://www.cnblogs.com/poloyy/category/1672457.html
首先,先造一点数据
mkdir -p ~/test/cool touch ~/test/cool/test{1..5}.txt touch ~/test/cool/{1..3}.sh
chmod 777 *.sh
history > test.txt
ls >> test1.txt
ls >> test1.txt
最基础的打印操作
find ~/test
知识点
- -print 是默认就有的,不写也可以,而 -print 默认是以 \n 来分隔找到的文件
- 如果不想换行打印,可以考虑空格分隔,加上 -print0 即可
find ~/test -print0
执行结果
通过文件名搜索
- -name:仅可以对文件的file_name匹配
- -path:可以对文件的dir_name、file_name匹配
查找的文件名最好使用引号包围,可以配合通配符进行查找
查找~/test下的.txt文件
find ~/test -name "*.txt"
在~/test下查找cool文件夹下的.txt文件
find ~/test -path "/*cool*/*.txt"
倘若,我们通过-name来执行会是怎么样的呢?是会报错的
因为 -name 是不能使用 / 的,除非文件名包含了 / , 因为 -name 只能匹配 file_name (即文件名),并不匹配 dir_name (即目录名)
所以想要在指定目录(~/test)下搜索某目录中(/cool)的某文件(.txt),应该使用-path而不是-name
通过文件的类型来搜索
在~/test目录下查找所有的目录
find ~/test -type d
在~/test目录下查找所有的文件
find ~/test -type f
还有其他不常用的文件类型
- b:块设备
- c:字符设备
- p:管道
- l:符号链接
通过文件的时间来搜索
在~/test目录下查找修改时间在5日以内的文件
find ~/test -mtime -5
在~/test目录下查找修改时间在3日以前的.txt文件
find ~/test -type f -name "*.txt" -mtime +3
在~/test目录下查找更改时间在5分钟以内的.txt文件
find ~/test -type f -name "*.txt" -mmin -5
在~/test目录下查找修改时间在10分钟以前的文件
find ~/test -mmin +10
注意点
- Linux的文件有三种时间类型,具体可看此文章:https://www.cnblogs.com/poloyy/p/12586677.html
- 无论是 -mtime +5 还是 -mtime -5 ,第五天内修改过的文件都不会被搜索出来,可看下图
通过文件的大小来搜索
语法格式
-size n[cwbkMG]
那么它有什么类型大小单位呢?(官方直接给了答案)
b:512字节的块(默认),1b = 512c
c:bytes,指定字节大小
w:等价于两个bytes,1w=2c,一般用户匹配中文
k:平时常说的1kb,1k=1024c=2b
M:1MB,1M=1024k=2048b
G:1GB,1GB=1024MB=2048*1024b
在~/test目录下查找所有size=0字节的文件
find ~/test -size 0
在~/test目录下查找所有size<100k的文件
find ~/test -size -100k
在~/test目录下查找所有size>1MB的文件
find ~/test -size +1M
通过编程中的“与、或、非”来搜索
- -a:与,即&&(默认都是与)
- -o:或:即||
- -not:非,即条件结果取反
在~/test目录下查找文件大小在1kb和10kb内的所有文件
find ~/test -size +1k -size -10k find ~/test -size +1k -a -size -10k
在~/test目录下查找大于1kb或类型为普通文件的文件
find ~/test -size +1k -o -type f
在~/test目录下查找非空文件
find ~/test -not -size 0
在~/test目录下查找文件或目录
find ~/test -type f -o -type d
搜索空文件
find ~/test -empty -type f
通过文件所属用户搜索
find ~/test -user root
通过文件所属组group搜索
find ~/test -group root