知识屋:更实用的电脑技术知识网站
所在位置:首页 > 操作系统 > linux

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

发布时间:2014-09-05 15:36:29作者:知识屋

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'
 
(免责声明:文章内容如涉及作品内容、版权和其它问题,请及时与我们联系,我们将在第一时间删除内容,文章内容仅供参考)
收藏
  • 人气文章
  • 最新文章
  • 下载排行榜
  • 热门排行榜