1、一般查找find
1.1简述及功能
Linux下find命令在目录结构中搜索文件,并执行指定的操作。Linux下find命令提供了相当多的查找条件,功能很强大。
1.2命令格式
man文档中给出的find命令的一般形式为:
find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression]
说明:
default path is the current directory; default expression is -print
expression may consist of: operators, options, tests, and actions:
其实[-H] [-L] [-P] [-D debugopts] [-Olevel]这几个选项并不常用(才疏学浅),上面的find命令的常用形式可以简化为:
find [path...] [expression]
更加一般的格式为:
find [path...] [options] [action]
1.3参数说明
path:find命令所查找的目录路径。
expression:expression可以分为——“-options [-print -exec -ok ...]”
-options,指定find命令的常用选项
-print,find命令将匹配的文件输出到标准输出
-exec,find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' '{}' \;,注意{ }和\;之间的空格
options常用选项
-name 按照文件名查找文件
-perm 按照文件权限来查找文件
-group 按照文件所属的组来查找文件
-mtime -n +n 查找n天内/n天前更改过的文件
-atime -n +n 查找n天内/n天前访问过的文件
-ctime -n +n 查找n天内/n天前创建的文件
-size 根据文件大小查找
-type b/d/c/p/l/f/s 查找某一类型的文件
-newer file1 ! file2 查找更改时间比文件file1新但比文件file2旧的文件
action选项
-print //默认情况下的动作
-ls //查找到后用ls 显示出来
-ok [commend] //查找后执行命令的时候询问用户是否要执行
-exec [commend] //查找后执行命令的时候不询问用户,直接执行
1.4举例说明
删除文件大小为零的文件:
find ./ -size 0 -exec rm '{}' \; 或者rm -i `find ./ -size 0` 或 find ./ -size 0 | xargs rm -f &
在$HOME中查.txt文件并显示:
find ~ -name "*.txt" -print
查找大于1,500字节大小的文件:
find / -size +1500c
查看当前目录下以.text为结尾的普通文件
find . -type f -name *.text -exec ls -l '{}' \;
2、数据库查找:locate
2.1描述及功能
locate 让使用者可以很快速的搜寻档案系统内是否有指定的档案。其方法是先建立一个包括系统内所有档案名称及路径的数据库,之后当寻找时就只需查询这个数据库,而不必实际深入档案系统之中了。在一般的 distribution 之中,数据库的建立都被放在 crontab 中自动执行。
locate命令可以在搜寻数据库时快速找到档案,数据库由updatedb程序来更新,updatedb是由cron daemon周期性建立的,locate命令在搜寻数据库时比由整个由硬盘资料来搜寻资料来得快,但较差劲的是locate所找到的档案若是最近才建立或 刚更名的,可能会找不到,在内定值中,updatedb每天会跑一次,可以由修改crontab来更新设定值。(etc/crontab)
2.2命令格式
locate [OPTION]... PATTERN...
2.3举例说明
[root@lsl locateDeme]# locate -V
mlocate 0.22.2
Copyright (C) 2007 Red Hat, Inc. All rights reserved.
This software is distributed under the GPL v.2.
This program is provided with NO WARRANTY, to the extent permitted by law.
[root@lsl locateDeme]# touch locate_test
[root@lsl locateDeme]# find ./ -name locate_test
./locate_test
[root@lsl locateDeme]# locate locate_test
[root@lsl locateDeme]# updatedb
[root@lsl locateDeme]# locate locate_test
/root/study/locateDeme/locate_test
[root@lsl locateDeme]# rm locate_test
rm: remove regular empty file `locate_test'? y
[root@lsl locateDeme]# locate locate_test
/root/study/locateDeme/locate_test
[root@lsl locateDeme]# updatedb
[root@lsl locateDeme]# locate locate_test
[root@lsl locateDeme]#
3查找执行文件:which/whereis
which用于人系统的PATH变量所定义的目录中查找可执行文件的绝对路径和相关命令的别名。
比如查找ls命令
[root@lsl locateDeme]# which ls
alias ls='ls --color=auto'
/bin/ls
使用whereis也能查到路径,但是和which不同的是,它不但能找出其二进制文件,还能找出相关的man文件。
比如
[root@lsl locateDeme]# whereis ls
ls: /bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz