您的位置:首页 > 运维架构 > Linux

Linux学习笔记三之文件搜索的命令

2012-11-19 17:51 435 查看
1、which 、whereis直接定位命令所在的绝对路径,只针对命令;

whereis提供命令的帮助信息

[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'
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: