ITPub博客

首页 > Linux操作系统 > Linux操作系统 > linux 命令与文件的查找

linux 命令与文件的查找

原创 Linux操作系统 作者:tthero00boo 时间:2013-10-25 10:55:44 0 删除 编辑

查命令: which ; type 

查文件: whereis 与 locate 利用数据库 ,find 扫描磁盘

which 

根据$PATH变量定义的目录,来查找可执行命令,并输出完整路径
选项或参数:
-a :将所有由 PATH 目录中可以找到的命令均列出,而不止第一个被找到的命令名称
但which无法查出bash内建命令如cd,这个可以通过 type cd(cd is a shell builtin)

type 

type命令用来显示指定命令的类型。一个命令的类型可以是如下之一

  • alias 别名
  • keyword 关键字,Shell保留字
  • function 函数,Shell函数
  • builtin 内建命令,Shell内建命令
  • file 文件,磁盘文件,外部命令
  • unfound 没有找到

它是Linux系统的一种自省机制,知道了是那种类型,我们就可以针对性的获取帮助。比如内建命令可以用help命令来获取帮助,外部命令用man或者info来获取帮助。

常用参数

type命令的基本使用方式就是直接跟上命令名字。

type -a可以显示所有可能的类型,比如有些命令如pwd是shell内建命令,也可以是外部命令。

type -p只返回外部命令的信息,相当于which命令。

type -f只返回shell函数的信息。

type -t 只返回命令的类型

whereis [-bmsu] 文件或目录名

选项与参数:
-b    :只找 binary 格式的文件
-m    :只找在说明档 manual 路径下的文件
-s    :只找 source 来源文件
-u    :搜寻不在上述三个项目当中的其他特殊文件

locate [-ir] 部分名称

选项与参数:
-i  :忽略大小写的差异;
-r  :后面可接正规表示法的显示方式

whereis 和 locate 比较适用找一些固有的文件

都是通过已创建的数据库 /var/lib/mlocate/的信息来进行查找
并不是真正去扫描磁盘,所以速度很快,但查找结果不一定准确
会发现可以找到已经删除的文件,或mv重命名但查出的是原文件名,或找不到刚刚创建的文件

因为mlocate,一般每天升级数据库一次,可locate mlocate,发现/etc/cron.daily/mlocate.cron
当然也可手动升级updatedb,但是扫描磁盘很慢,建议慎重

updatedb:根据 /etc/updatedb.conf 的配置去搜寻系统硬盘内的档名,并升级 /var/lib/mlocate 内的数据库文件;

find   

-name文件
告诉find要找什么文件;要找的文件包括在引号中,可以使用通配符(*和?)
-type x 
匹配所有类型为x的文件。x是c(字符特殊),b(块特殊),d(目录),p(有名管道),l(符号连接),s(套接文件)或f(一般文件)
-user用户号
匹配所有用户序列号是前面所指定的用户序列号的文件,可以是数字型的值或用户登录名。
-print 
显示整个文件路径和名称。一般来说,都要用-print,如果没有这个参数,则find命令进行所要求的搜索是没有显示结果的

find的使用实例:
  $ find . -name 'my*'
搜索当前目录(含子目录,以下同)中,所有文件名以my开头的文件。
  $ find . -name 'my*' -ls
搜索当前目录中,所有文件名以my开头的文件,并显示它们的详细信息。
  $ find . -type f -mmin -10
搜索当前目录中,所有过去10分钟中更新过的普通文件。如果不加-type f参数,则搜索普通文件+特殊文件+目录。

[acm][min/time]
a -access ;c -changed(status) ;m -modified
min 分钟 ; time 天数

amin n 查找n分钟以前被访问过的所有文件.
atime n 查找n天以前被访问过的所有文件.
cmin n 查找n分钟以前文件状态被修改过的所有文件.
ctime n 查找n天以前文件状态被修改过的所有文件.
mmin n 查找n分钟以前文件内容被修改过的所有文件.
mtime n 查找n天以前文件内容被修改过的所有文件.

find / -mtime 4 与 find / -mtime +/-4

               <- 4 ->
   <---------- +4   -4 ---------------------> 
  --------------------------------------------->
   |     |     |     |     |     |     |     |
   7     6     5     4     3     2     1     now

[root@localhost eg]# find / -name 'add.c' -exec ls -l {} \;
-rw-r--r-- 1 root root 68 May 17 14:53 /root/Documents/eg/add.c

{}是代表find的结果
-exec 一直到 \; 是关键字,代表 find 额外动作的开始 (-exec) 到结束 (\;) ,在这中间的就是 find 命令内的额外动作
;因为可能有特殊意义,所以反斜杠\跳脱特殊字符

2.find xargs
$ find / -user oracle -mmin -2 -print 1>~/x3 2>/dev/null
$ find / -name 'inventory' -type d -print 1>~/find2.t 2>/dev/null

$ find . -mmin +720 -print| xargs rm -rf     #+720 720m之前, -720 表示720m以内...
嘛,要删之前最好再看一下... 
$ find . -mmin +720 -print|ll

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28859270/viewspace-774995/,如需转载,请注明出处,否则将追究法律责任。

下一篇: linux 文件系统
请登录后发表评论 登录
全部评论

注册时间:2013-06-30

  • 博文量
    31
  • 访问量
    142948