​文件检索相关命令总结

文件检索相关命令

一、概览

1. which:用于查找可执行文件(外部命令、脚本)

2. whereis:查找程序、帮助手册、源文件的位置

3. locate:索引库模糊查找

4. whatis:在whatis数据库里查找完整的单词,相当于man –f。

5. find:精确多条件查找

二、细说

       实验环境如下显示,操作系统环境不同,命令执行后显示结果会略有出入,但是不影响命令的用法。

[[email protected] ~]$ uname–r                  //显示内核版本
2.6.18-348.el5
[[email protected] ~]$ cat/etc/redhat-release    //操作系统描述
Red Hat Enterprise Linux Server release 5.9(Tikanga)

1. which

语法:which [-a] 命令

选项或参数:

-a:将所有PATH目录中可以找到的指令均列出,而不止第一个被找到的指令名称。

功能说明: which可搜索的范围由环境变量PATH决定,通常情况下,管理员与普通用户的PATH变量是不同的,可分别以root用户、普通用户 user登入后执行echo $PATH 查看。

root用户的PATH变量:

[[email protected] ~]# echo $PATH
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin

普通用户的PATH变量:

[[email protected] ~]# su - user01                            //临时切换登录为普通用户
[[email protected] ~]$ echo $PATH                                 
/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/user01/bin

使用which查找which命令的执行程序位置:

[[email protected] ~]# which which
alias which=‘alias | /usr/bin/which --tty-only --read-alias--show-dot --show-tilde‘//别名
       /usr/bin/which                                 //which命令的执行程序位置

从上述结果可以看到,which的输出结果包括了命令别名。这是因为Linux为了方便用户使用,设置了which别名以添加别名搜索所致。

which默认只输出找到的第一个目标,若要列出所有目标,应添加选项 -a:

[[email protected] ~]# which -a touch                       //确保不会出现在下面用的/usr/bin目录
/bin/touch
[[email protected] ~]# cp /bin/touch/usr/bin/    //复制touch到另一个执行目录(必须在$PATH里)
[[email protected] ~]# ls -lh /bin/touch/usr/bin/touch     //确认复制结果
-rwxr-xr-x 1 root root 42K 2012-03-14/bin/touch
-rwxr-xr-x 1 root root 42K 08-02 10:59/usr/bin/touch
[[email protected] ~]# which touch                         //只查到第一个目标
/bin/touch                                                                                  
[[email protected] ~]# which -a touch                      //查找所有目标
/bin/touch
/usr/bin/touch

由于内部命令是内建在/bin/bash解释器中的指令,并没有独立的可执行文件存在,所以尝试用which来搜索是找不到的。例如,用which找cd、help等内部命令时会提示找不到结果:

[[email protected] ~]# which cd help
/usr/bin/which: no cd in(/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:
/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin)
/usr/bin/which: no help in(/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:
/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin)

2.whereis

语法:whereis [-bmsu] 命令或目录

选项与参数:

-b :只找binary格式的文件

-m :只找在说明文件manual路径下的档案

-s  :只找source来源档案

-u  :搜寻不再上述三个项目当中的其他特殊档案

功能说明:Linux系统会将系统内的所有档案都记录在一个数据库里,而当使用whereis或者是locate时,都会以此数据库档案的内容为准,因此,有的时候你会发现使用这两个命令时,会找到已经被删除的文件,而且也找不到最新的刚刚建立的文件,这时只需更新数据库,然后再用这两个命令搜寻。

使用不同的身份找出ifconfig的档案

[[email protected] ~]# whereis ifconfig
ifconfig: /sbin/ifconfig/usr/share/man/man8/ifconfig.8.gz
[[email protected] ~]# which ifconfig                               //root用户可以用which搜到
/sbin/ifconfig
[[email protected] ~]# su - user01                                 //切换到普通用户user01的身份
[[email protected] ~]$ whereis ifconfig                          //普通用户与root找到的结果一样
ifconfig: /sbin/ifconfig/usr/share/man/man8/ifconfig.8.gz
[[email protected] ~]$ which ifconfig                            //但是普通用户用which却找不到
/usr/bin/which: no ifconfig in(/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/user01/bin)

用which一般使用找不到的ifconfig却可以让whereis找到,这是因为系统真的有ifconfig这个档案,但是使用者的PATH并没有加入/sbin,which只是基于PATH里目录的搜寻

3. locate

语法:locate [选项] 关键字

选项与参数:

-i:忽略大小写

-d:指定使用的数据库

功能说明:搜索数据库而不是硬盘,所以搜索速度较快,默认的数据库/var/lib/mlocate/mlocate.db。有的系统默认每天更新一次数据库,也可以直接输入updatedb手动更新数据库。

删除/新增加的文件,需要更新数据库以后才能体现效果:

[[email protected] ~]# touch newfile                 //在当前目录下新建文件newfile
[[email protected] ~]# locate newfile                //找不到新增加的文件
[[email protected] ~]# updatedb                      //更新数据库
[[email protected] ~]# locate newfile                //新增加的文件可以找到
/root/newfile

4.whatis

语法:whatis 关键字

功能说明:功能相当于man –f,对关键字的不同形式进行简短的描述。 查找的内容必须完全匹配关键字的才会输出。 whatis 数据库文件是用/usr/sbin/makewhatis 命令建立的。

用whatis查找passwd

[[email protected] ~]# whatis passwd
passwd               (1)  - update user‘s authentication tokens
passwd               (5)  - password file
passwd              (rpm) - The passwd utility forsetting/changing passwords using PAM
passwd [sslpasswd]   (1ssl) - compute password hashes

左边部分是指令或文档及该指令所代表的意义

中间的数字或是“rpm”等表示该指令所代表的意义,数字是man手册页的入口

右边部分是对这个指令或文档的简短说明。

中间数字的用法:

[[email protected] ~]# man 1 passwd   //这里是用man(1)的文件数据来显示passwd的帮助信息
[[email protected] ~]# man 5 passwd   //这里是用man(5)的文件数据来显示passwd的帮助信息

5.find

语法:find [路径] [条件]

功能说明:find指令用于查找符合条件的文件。[-H][-L][-P]除外的任何位于参数之前的字符串都将被视为欲查找的目录。参数超级多

1)使用-type按类型查找

这里的类型指的是普通文件(f)、目录(d)、块设备文件(b)、字符设备文件(c)、链接(l)等。块设备指的是成块读取数据的设备(如硬盘、内存等),而字符设备指的是按单个字符读取数据的设备(如键盘、鼠标等)。

查找/boot目录下的符号连接文件:

[[email protected] ~]# find /boot -type l
/boot/grub/menu.lst
[[email protected] ~]# ls -lh /boot/grub/menu.lst
lrwxrwxrwx 1 root root 11 2013-07-10/boot/grub/menu.lst -> ./grub.conf

查找/boot目录下的文件夹

[[email protected] ~]# find /boot -type d
/boot
/boot/grub
/boot/lost+found

2)使用-name按名称查找

查找/boot目录下名称包含”grub”的对象

[[email protected] ~]# find /boot -name *grub*
/boot/grub
/boot/grub/grub.conf

3)组合多个条件查找

可使用-a同时匹配多个条件(都必须满足),-a可省略,例如可只列出/boot目录下名称包含”grub”的目录:

[[email protected] ~]# find /boot -name *grub* -a-type d
/boot/grub

可使用-o同时匹配多个条件(只需满足其中任何一个),-o不可省略。例如查找/boot目录下名称包含”grub”或者是目录的对象。

[[email protected] ~]# find /boot -name *grub* -o-type d
/boot
/boot/grub
/boot/grub/grub.conf
/boot/lost+found

4)使用-size按大小查找,可指定容量单位c(小写,表示byte)k(小写)、M(大写)、G(大写)

通过“-size +大小”指定是否超过指定的容量。例如在/boot目录下查找容量超过2MB的文件:

[[email protected] ~]# find /boot -size +2M
/boot/initrd-2.6.18-348.el5.img
/boot/vmlinuz-2.6.18-348.el5

通过“-size -大小”指定是否小于指定的容量,例如在/boot/grub目录下查找容量小于2KB的普通文件:

[[email protected] ~]# find /boot -size -2k
/boot
/boot/grub
/boot/grub/stage1
/boot/grub/device.map
/boot/grub/menu.lst
/boot/grub/grub.conf
/boot/.vmlinuz-2.6.18-348.el5.hmac

5)使用-mtime按是否在指定日期内修改过进行查找

-mtimen

n   n为数字,意义在n天之前的“一天之内”被更改过的文件

+n  列出在n天之前(不含n天本身)被更改过的文件名

-n  列出在n天之内(含n天本身)被更改过的文件名

将过去系统上面24小时内有更动过的内容的文件列出

[[email protected] ~]# find / -mtime 0              //0代表目前的时间

6)使用 -exec 指定可执行语句对查找结果进行处理

在处理语句中,以 {} 代替查找结果、最后以 \; 表示处理结束(注意与前面的执行语句之间隔一个空格)。例如,上述find查找/boot目录下大于2MB文件操作,可直接用 -exec接上ls命令来列出详细属性:

[[email protected] ~]# find /boot -size +2M -execls -lh {} \;
-rw------- 1 root root 2.7M 2013-07-23/boot/initrd-2.6.18-348.el5.img
-rw-r--r-- 1 root root 2.1M 2012-11-29/boot/vmlinuz-2.6.18-348.el5

7)使用-user、-group查找属于指定用户、组的文档

在根目录下查找属于用户user01的文件夹:

[[email protected] ~]# find / -user user01 -type d
/home/user01
/home/user01/.mozilla
/home/user01/.mozilla/extensions
/home/user01/.mozilla/plugins

8)使用-perm查找指定权限的文档(具体可参见man手册)

    find . -perm 600      //当前目录只要有文档的属主的权限包含读写,都打印出来
    find . -perm u+rw     //和find . -perm 600结果一样
    find . -perm u=rw     //和find . -perm 600结果一样
    find . -perm +600     //只要当前目录下文档属主的权限有读或写,都打印出来    
    find . -perm -600     //只要当前目录下文档属主的权限有读且写,都打印出来

三、总结

2       搜寻指令的完整文件名可用which或type,这两个指令都是透过PATH变量来搜寻文件名;

2       搜寻文档的完整路径可以使用whereis或locate到数据库档案去搜寻,而不实际搜寻文件系统;

2       利用find可以加入许多选项来直接查询文件系统,以获得自己想要知道的文档。

2       要查找指令在man手册页的入口,可以用whatis或者man –f 。

​文件检索相关命令总结,布布扣,bubuko.com

时间: 2024-10-17 21:37:51

​文件检索相关命令总结的相关文章

ACL最大权限及相关命令

先查看目录vampire的acl权限 1 [[email protected] home]# getfacl vampire 2 # file: vampire/ 3 # owner: vampire 4 # group: vampire 5 user::rwx 6 user:iaknehc:r-x 7 group::--- 8 mask::r-x 9 other::--- mask是用来指定最大有效权限的,如果给用户赋予了ACL权限,是需要和mask的权限"相与"才能得到用户的真正权

redis cluster (2) 相关命令参考及慢查询

实例关闭命令 redid-cli  shutdown  说明:关闭时强制 bgsave 所以需要一些时间    注:在start时,需要先加载数据到内存,数据加载完毕之后 redis 才会listen 端口 集群相关命令 1.CLUSTER INFO 打印集群的信息   2.CLUSTER NODES 列出集群当前已知的所有节点(node),以及这些节点的相关信息.  3.CLUSTER FAILOVER 手动故障转移,需要在转移的主节点的从节点上执行 节点 相关命令 1.CLUSTER MEE

MBR与GPT分区的区别及磁盘分区相关命令

一.MBR分区结构 主引导记录(Master Boot Record,缩写:MBR),又叫做主引导扇区,是目前比较流行的一种分区结构.磁盘的0磁道0扇区称为MBR,它的大小是512字节,这个区域被分为三个部分: 第一部分为boot loader(主引导程序),占446字节: 第二部分为Partition table(分区表),即DPT,占64字节,每个分区项占用16个字节,这16个字节中存有活动状态标志.文件系统标识.起止柱面号.磁头号.扇区号.隐含扇区数目(4个字节).分区总扇区数目(4个字节

Linux基础--进程管理相关命令介绍(2)

本文主要介绍了Linux中进程管理的相关命令,涉及到的主要命令有top,vmstat等. (1)top ①功能:用来查看CPU,内存以及进程的状态. ②用例: ③相关注释: load average表示负载,三个数值分别表示第1分钟,第5分钟,第10分钟 Cpu中us表示用户空间程序占用百分比,sy表示内核模式占用百分比,ni表示调整NICE值所占用的    CPU百分比,id表示CPU的空闲比例,wa表示等待磁盘IO完成所占用的时间比例,hi表示硬件中断占     据的百分比,si表示软中断所

linux查看硬件和系统信息的相关命令简介

linux查看硬件和系统信息的相关命令简介 <转> [[email protected] ~] # uname -a               # 查看内核/操作系统/CPU信息的linux系统信息命令[[email protected] ~] # head -n 1 /etc/issue   # 查看操作系统版本,是数字1不是字母L[[email protected] ~] # cat /proc/cpuinfo      # 查看CPU信息的linux系统信息命令[[email prot

linux下查找进程及终止进程操作的相关命令

使用linux操作系统,难免遇到一些软件"卡壳"的问题,这时就需要使用linux下强大的kill命令来结束相关进程.这在linux系统下是极其容易的事情,你只需要kill xxx即可,这里xxx代表与此软件运行相关的进程PID号.首先,我们需要使用linux下另外一个命令ps查找与进程相关的PID号:ps aux | grep program_filter_word1)ps a 显示现行终端机下的所有程序,包括其他用户的程序.2)ps -A 显示所有程序.3)ps c 列出程序时,显示

redis-key相关命令

本篇主要介绍和redis的key进行操作的相关命令. 命令 描述 复杂度 返回值 DEL key [key ...] 删除给定的一个或多个 key .不存在的 key 会被忽略.删除单个列表.集合.有序集合或哈希表类型的 key ,时间复杂度为O(M), M 为以上数据结构内的元素数量. O(N),N为被删除的key的数量.删除单个字符串类型的 key ,时间复杂度为O(1). 被删除 key 的数量. DUMP key 序列化给定key ,并返回被序列化的值,使用 RESTORE命令可以将这个

Linux用户和组介绍及相关命令的使用

用户和组介绍 用户类别: 管理员 普通用户 系统用户 登录用户 用户标识:UserID, UID 16bits二进制数字:0-65535 管理员:0 普通用户:1-65635 系统用户:1-499(CentOS6), 1-999(CentOS7) 登录用户:500-60000(CentOS6), 1000-60000(CentOS7) 名称解析:名称转换 Username <--> UID 根据名称解析库进行:/etc/passwd 组: 组类别1: 管理员组 普通用户组 系统组 登录组 组标

ubuntu 主机配置相关命令

使用ubuntu系统这么久了,但还主要是停留在简单的使用上,好多关于系统设置方面的命令平时用的少,看书的时候一晃而过,也就忘记了,到用的时候又要去找,很麻烦,今天开始就在这记录平时遇到问题需要解决时查找的一些命令,也方便以后的回忆和查阅. ubuntu下查看电脑的配置: lshw -short H/W path       Device  Class          Description=================================================