Linux学习笔记三之文件搜索的命令
相关链接:
Linux学习笔记一之文件操作命令
http://www.zhishiwu.com/os/201211/169196.html;
Linux学习笔记二之权限管理命令
http://www.zhishiwu.com/os/201211/169485.html
1、which 、whereis直接定位命令所在的绝对路径,只针对命令;
whereis提供命令的帮助信息 www.zhishiwu.com
[root@CentOS-Test data]# whereis ls
ls: /bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz
which提供命令的别名
[root@CentOS-Test data]# which ls
alias ls='ls --color=auto'
2、 find 查找文件或目录
使用此命令先指定搜索的路径,再设置搜索的方法
-name 根据文件名来查找
是全部匹配init
[root@CentOS-Test data]# find /etc -name init
/etc/sysconfig/init
/etc/init
/etc/kdump-adv-conf/kdump_initscripts/init
模糊查询init
*:匹配任意字符
[root@CentOS-Test data]# find /etc -name init*
/etc/inittab
/etc/rc.d/init.d
/etc/init.d
/etc/sysconfig/network-scripts/init.ipv6-global
/etc/sysconfig/init
/etc/init
/etc/init/init-system-dbus.conf
/etc/selinux/targeted/contexts/initrc_context
/etc/kdump-adv-conf/kdump_initscripts/init
?:匹配单个字符
[root@CentOS-Test data]# find /etc -name init??
/etc/rc.d/init.d
/etc/init.d
-size:根据文件的大小 ,单位是block,1M=1024k*2=2048block
大于:+
[root@CentOS-Test data]# find -size +2048
./cc.txt
小于:-
[root@CentOS-Test data]# find -size -2048
./cc.txt
-user:根据文件的所有者来查找,例如将一个用户删除后,此用户创建的一些文件仍然会存在,如果删除的话,就需要用到这个参数
[root@CentOS-Test data]# find -user test
根据时间来查找,可以分成两组:
c-change(改变),表示文件的属性被修改过,比如文件的所有者、权限等,可以使用ll查看
a-access(访问),表示文件被查看、访问过
m-modify(修改),表示文件的内容被修改过,比如文件增加一个行等
-:之内 +:超过
1、天:ctime、atime、mtime
2、分钟:cmin、amin、mmin
比如查找在两个小时内/etc/目录下文件内容被修改过的
[root@CentOS-Test data]# find /etc -mmin -120
在命令中使用连接符
-a:相当于and,可以理解为逻辑与 -o:相当于or,可以理解为逻辑或
根据文件的类型逻辑与参数的使用
文件类型为init*且是二进制类型
[root@CentOS-Test data]# find /etc -name init* -a -type f
文件类型为init*且是为链接文件
[root@CentOS-Test data]# find /etc -name init* -a -type l
文件类型为init*且是为目录
[root@CentOS-Test data]# find /etc -name init* -a -type d
根据文件的类型逻辑或参数的使用
文件类型为init*且是二进制类型
[root@CentOS-Test data]# find /etc -name init?? -o -type f
文件类型为init*且是为链接文件
[root@CentOS-Test data]# find /etc -name init? -o -type l
文件类型为init*且是为目录
[root@CentOS-Test data]# find /etc -name init?? -o -type d
使用执行参数exec
-exec 命令 {}/; 此参数配合find命令使用,是将find查询出的结果用一个命令来exec(执行)
{}:表示find查询的结果;/:表示转义符,使符号和命令使用本身的含义,例如当使用rm删除一个文件
时,如果不加参数会提示你是否确认,此命令的原意是rm=rm -i;可以使用which rm来看到别名,故当删除
一个文件时不提示可以使用[root@CentOS-Test data]# /rm 文件名
;:表示一个命令结束
例如:
查找/etc下的inittab的文件并给予显示
[root@CentOS-Test data]# find /etc -name inittab -exec ls -l {} /;
查找/data下包含xx的文件并删除不用确认
[root@CentOS-Test data]# find ./ -name xx* -exec rm -f {} /;
[root@CentOS-Test data]# find ./ -name baks -exec rm -r {} /;删除目录
-ok :询问确认,对于执行删除的动作很有用
[root@CentOS-Test data]# find ./ -name bak -ok ls {} /;
< ls ... ./bak > ? yes
-inum参数:根据文件的inode节点来操作
删除带特殊字符的文件,例如删除-abc 'a b',删除此样的文件时,可以使用文件的i节点来删除
先用ls -i 找到此文件的i节点,然后使用find命令来删除
[root@CentOS-Test data]# mkdir -- -abc
[root@CentOS-Test data]# ls
-abc bak
[root@CentOS-Test data]# ls -i
13 -abc 12 bak
[root@CentOS-Test data]# find ./ -inum 13 -exec rm {} /;
3、locate 文件名或目录名 寻找文件或目录
列出所有跟文件名相关的文件,locate命令是在定期的文件数据库(updatedb)中查找到,刚创建的文件在没有更新文件数据库时是查找不到的
updatedb文件会定期自动更新
4、grep在文件中搜索字符串匹配的行并输出
语法:grep [指定字符串][源文件]
grep 'lhc' /data/xx.txt
5、组合使用find+grep+xargs
在当前目录下查找所有的txt文件,并在查找出的txt文件里查找内容为'sss'的文件并给与列示
[root@CentOS-Test data]# find ./ -name "*.txt"|xargs grep 'sss'