日期:2014-05-16  浏览次数:20808 次

Linux学习笔记三之文件搜索的命令
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