这一部分主要学习了如何搜索文件。
常用的文件搜索命令有locate,which,whereis和find, 下面依次看看
locate是通过一个数据库来利用名字搜索。他的速度很快,不过数据库更新比较慢,一周才更新一次,因此最新的信息可能找不到,需要手动更新updatedb之后才能查到
例如
which 和 whereis 一般用来搜索某个命令所在的路径
下面重点来看看 find
find 的基本语法格式是 find 目录 -属性 值
如果不设置目录,默认为当前目录
属性主要通过以下8个方面来搜索
-name
-size
-user/group
-uid/gid
-perm
-type
-ctime/cmin
-newer
例如
例1: 通过-name 名字来搜索 ,如果要忽略大小写,可以用-i, 这和grep一样
例2: 通过- size 来搜索,首先创建4个块文件,分别是1M,2M,3M,4M
+2M代表2M以上,-4M则表示4M以下
-a 表示 and(和), -o 表示or (或者),可以利用这种方式设置多组条件
注意,find的默认搜索是递归的搜索,会搜索当前目录下的所有子目录,因此他连子目录test也显示了
例3 通过 -user/group 搜索,也可以通过-uid/gid 搜索
例4: 通过 -perm 进行权限的搜索,注意-表示所有的条件必须全部满足;而/表示u,g,o满足任何一项的条件即可
例5: 通过-type 搜索类型,比如我创建了一个软连接,可以指定l来搜索
例6: 通过时间来搜索,比如创建时间超过25分钟的文件
例7: 通过文件的比较来搜索,比如比bb2更新的文件
find还有两种常见的组合用法,查找后执行命令 -exec 命令 {} \ ,那个{}代表的是查找的结果;或者是通过管道把结果作为参数给 xargs 后面的命令使用
例8: 输出查找文件的属性,两种方式都是可以的