命令与文件的查询 where locate find

命令与文件查询:where,whereis, locate,find

where:命令查找

whereis,locate:非实时查找工具;依赖于实现构建的索引,索引的构建是在系统较为空闲时自动进行(周期性任务),手动更新此数据库(updatedb)查找速度快,模糊查找

find: 文件查找,实时查找;查找速度略慢;精确查找

脚本文件名的查询

which查询执行文件

语法:which [-a]command

参数:-a:列出通过PATH查询到的所有命令都列出,而不是只是显示第一个被查询到的命令

示例:

 
 [[email protected]~]# which cd
 /usr/bin/cd
 [[email protected]~]# which which
 aliaswhich=‘alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde‘
 /usr/bin/alias
 /usr/bin/which

文件名查找

(1)whereis查询指定文件

语法: whereis [-bmsu] 文件或目录名

参数:

-b:只查找二进制格式文件

-m:只查找说明文件manual路径下的文件

-s:只查找source源文件

-u:查找不属于上面三个选项外的特殊文件

示例:

        [[email protected]~]# whereis ifconfig
        ifconfig: /usr/sbin/ifconfig /usr/share/man/man8/ifconfig.8.gz

(2)locate命令

语法:locate [-ir] keyword

参数:

-i:忽略大小写

-r:后面可接正则表达式的显示方式

查询已创建数据库/var/lib/mlocate/

输入updatedb 更新数据库

  示例:

# 如果没有locate命令需要安装 mlocate包
[[email protected]~]# locate passwd
/etc/passwd
/etc/passwd-
/etc/pam.d/passwd
/etc/security/opasswd
/usr/bin/gpasswd
/usr/bin/grub2-mkpasswd-pbkdf2
/usr/bin/passwd
 …

(3) find 命令

find [OPTION]...[查找路径][查找条件][处理动作]

查找路径: 默认当前路径

查找条件:默认找出指定路径下的所有文件

处理动作:对符合条件的文件做什么操作,默认为输出屏幕

查找条件:

 根据文件名进行查找

-name "文件名称":支持使用glob

*,?,[]

-iname "文件名": 不区分字符大小写,支持glob

-regex "PATTERN": 以PATTERN匹配整个文件路径字符串,而不仅仅是文件名称

根据属主,属组查找:

-user USERNAME :查找属于指定用户的文件

-group GROUPNAME: 查找属于指定用户组的文件

-uid #:查找指定用户ID的文件

-gid #:查找指定用户组ID的文件

-nouser: 查找文件的所有者不存在/etc/passwd中的文件

-nogroup: 查找文件的所属用户组不存在/etc/group中的文件

根据文件类型进行查找:

-type TYPE

-(f) 一般正规文件

d 目录文件

l 连接文件

b 设备文件

c 设备文件

p FIFO

s socket

组合查找条件:

与条件:-a

或条件:-o

非条件:-not,!

!A -o !B = !(A -a B)

!A -a !B = !(A -o B)

根据文件大小查找

-size [+|-]#UNIT

单位: k,M,G

#UNIT (#-1,#] 例如 3k 则查找2k<size<=3k的文件

+#UNIT (#,+oo) 查找大于#k的文件

-#UNIT [0,#-1] 查找小于等于#-1大小的文件

 根据时间戳:

以”天“为单位

-atime [+|-]# 被访问过的文件

#:[#,#+1): #天之前的一天之内被访问过的文件

+#:[#+1,oo]: #天之前被访问过的文件

-#:[0,#): #天之内被访问过的文件

-mtime 文件被修改的时间

-ctime 文件属性被修改的时间

以”分钟“为单位

-amin

-mmin

-cmin

 根据权限查找

-perm [/|-]MODE

MODE:精确权限匹配

/MODE: 任何一类对象(u,g,o)的任何一位权限符合条件即可,

-MODE: 为每一类对象指定的每一位权限都必须同时存在方位符合条件:隐藏与条件


处理动作:

-print:默认处理动作

-ls:类似于对查找到的每个文件做“ls -l”操作

-delete:删除查找到文件

-fls /path/to/somefile 把查找到的文件的详细路径信息保存至指定文件中

-ok COMMAND {} \;

对每个文件执行指定的命令之前需要用户确认

-exec COMMAND {} \;

无需用户确认

 示例

#根据文件名查找
[[email protected]~]# find / -name functions
/etc/rc.d/init.d/functions
/tmp/test/functions
/usr/lib/tuned/functions
 
#根据用户查找
[[email protected]~]# find /home/ -user root
/home/
/home/lost+found
 
#寻找文件所在组不在/etc/group中的文件
[[email protected] ~]# find / -nogroup
find: ‘/proc/3742/task/3742/fd/6’: No such file or directory
find: ‘/proc/3742/task/3742/fdinfo/6’: No such file or directory
find: ‘/proc/3742/fd/6’: No such file or directory
find: ‘/proc/3742/fdinfo/6’: No such file or directory
 
#根据文件类型查找:
[[email protected] ~]# find /tmp/ -type d
/tmp/
/tmp/.Test-unix
/tmp/.font-unix
/tmp/test
/tmp/.ICE-unix
/tmp/.XIM-unix
/tmp/.X11-unix
 
#根据文件大小查询
[[email protected] ~]# find /tmp/-size 1k
/tmp/test/test_grep
/tmp/test/test_vim
[[email protected] ~]# find /tmp/ -size 3k
[[email protected] ~]# find /tmp/ -size -3k
/tmp/test/test_grep
/tmp/test/test_vim
 
#根据时间戳:
[[email protected] ~]# find /tmp/ -atime +3 -ls
390928    4 -rw-r--r--   1 root    root           71 Aug 31 07:48/tmp/test/test_grep
[[email protected] ~]# find /tmp/ -atime 3 -ls
[[email protected] ~]# find /tmp/ -atime -3 -ls
389380    4 drwxrwxrwt   8 root    root         4096 Sep  7 02:04 /tmp/
389466    4 drwxrwxrwt   2 root    root         4096 Aug 20 06:20/tmp/.Test-unix
389465    4 drwxrwxrwt   2 root    root         4096 Aug 20 06:20/tmp/.font-unix
389381    4 drwxr-xr-x   2 root    root         4096 Sep  7 01:03 /tmp/test
390477   16 -rw-r--r--   1 root    root        13430 Sep  7 00:26 /tmp/test/functions
390986    4 -rw-r--r--  1 root     root          103 Sep  7 00:01 /tmp/test/test_vim
389463    4 drwxrwxrwt   2 root    root         4096 Aug 20 06:20/tmp/.ICE-unix
389464    4 drwxrwxrwt   2 root    root         4096 Aug 20 06:20/tmp/.XIM-unix
389462    4 drwxrwxrwt   2 root    root         4096 Aug 20 06:20/tmp/.X11-unix
 
#根据权限查找
#精确匹配权限为644
[[email protected] ~]# find /tmp/test/ -perm 644 -ls
390928    4 -rw-r--r--   1 root    root           71 Aug 31 07:48/tmp/test/test_grep
390986    4 -rw-r--r--   1 root    root          103 Sep 7 00:01 /tmp/test/test_vim
 
#每一类对象权限是同时包含w
[[email protected] ~]# find /tmp/test/ -perm -222 -ls
390477   16 -rw-rw-rw-   1 root    root        13430 Sep  7 00:26 /tmp/test/functions
#至少有一类对象包含w权限
[[email protected] ~]# find /tmp/test/ -perm /222 -ls
389381    4 drwxr-xr--   2 root    root         4096 Sep  7 01:03 /tmp/test/
390477   16 -rw-rw-rw-   1 root    root        13430 Sep  7 00:26 /tmp/test/functions
390928    4 -rw-r--r--   1 root    root           71 Aug 31 07:48/tmp/test/test_grep
 
#处理动作
[[email protected] ~]# find /tmp/test/ -perm 644 -exec ls -l {} \;
-rw-r--r--. 1 root root 71 Aug 31 07:48 /tmp/test/test_grep
-rw-r--r--. 1 root root 103 Sep 7 00:01 /tmp/test/test_vim

练习:

1、查找/var目录属主为root,且属组为mail的所有文件;

#find /var/ -user root -group mail -ls

2、查找/usr目录下不属于root、bin或hadoop的所有文件;

#find /usr -not \( -user root -o -user bin -o -user hadoop \) -ls

3、查找/etc目录下最近一周内其内容修改过,且属主不为root或hadoop的所有文件;

#find /etc -mtime -7 -not -user root -a -not -user hadoop

4、查找当前系统上没有属主或属组,且最近一周内曾被访问过的所有文件;

# find / \( -nouser -o -nogroup \) -atime +7

5、查找/etc目录下大于20k且类型为普通文件的所有文件;

# find /etc/ -size +20k -type f

6、查找/etc目录下所有用户都没有写权限的文件;

#find /etc/ -not -perm /222 -ls

7、查找/etc目录下至少有一类用户没有执行权限的文件;

#find /etc/ -not -perm -111 –ls

8、查找/etc/init.d目录下,所有用户都有执行权限,且其它用户拥有写权限的文件;

#find /etc/init.d/ -perm -111 -a -perm -002 -ls

如有错误,敬请指正!

谢谢!

 

时间: 2024-12-21 04:01:28

命令与文件的查询 where locate find的相关文章

linux下命令与文件的查询

Linux命令与文件的查询 1  脚本文件名的查询 which(寻找"执行文件") 参数-a  :将所有由path目录中可以找到的命令均列出,而不止第一个被找到的目录名称 以 ifconfig为例  可以找到正确的文件执行名 以which 本身为例 alias--->命令别名,输入which会等于后面接的那串命令 以常用的cd指令为例 为什么会找不到呢? 原因在于which的查找机制,which是默认查找PATH内所规范的目录,cd是bash内置的命令当然找不到啦,这里我们使用t

命令与文件的查询

一.which命令:如which ls[[email protected] ~]# which [-a] command选项或参数:-a :将所有由 PATH 目录中可以找到的命令均列出,而不止第一个被找到的命令名称 范例一:分别用root与一般帐号搜寻 ifconfig 这个命令的完整档名[[email protected] ~]# which ifconfig/sbin/ifconfig <==用 root 可以找到正确的运行档名喔![[email protected] ~]# su - v

linux命令,文件与目录(cp,pwd,mkdir,rmdir;ls,cp,rm,mv,basename,dirname;cat,tac,more,less,head,tail,touch,umask,chattr,file,which,locate,find)

1.目录操作: (1)cd  (切换目录) cd ~   回到主目录 cd      回到主目录 cd ..   回到上层目录 cd -    回到刚才的目录 cd /var/spool/mail    绝对路径 cd ../mqueue     相对路径(由/var/spool/mail 转到/var/spool/mqueue这样写) (2)pwd (显示当前目录) pwd   显示当前目录 pwd -P   显示当前目录(不以连接文件的数据显示,而是显示正确的完整路径) (3)mkdir (

Linux 入门之文件查找(find、locate)命令

Linux入门之Find文件查找命令 在liunx中有很多文件查找工具,但是最常用的却是locate和find命令,他们都有多种条件进行文件搜索,当然各自也有不同的特点. locate 命令: 原理:此命令查询文件的准确度依赖于系统上预建的文件索引数据库文件: /var/lib/mlocate/mlocate.db [[email protected] ~]# ls -l /var/lib/mlocate/mlocate.db  -rw-r-----. 1 root slocate 213573

Shell命令-搜索文件或目录之whereis、locate

文件及内容处理 - whereis.locate 1. whereis:查找二进制命令,按环境变量PATH路径查找 whereis命令的功能说明 whereis 命令用于查找文件.该指令会在特定目录中查找符合条件的文件.这些文件应属于原始代码.二进制文件,或是帮助文件.该指令只能用于查找二进制文件.源代码文件和 man 手册页,一般文件的定位需使用 locate 命令. whereis命令的语法格式 whereis [options] [-BMS directory... -f] name...

Linux使用locate命令定位文件

全文节选翻译自:http://linux-blog.org/finding-files-with-locate/ FIND命令 很多Linux用户喜欢使用find命令来查找文件,例如他们通常喜欢这样做: find / -name 'pattern' 确实find的强大功能不仅仅用来查找文件,它能用来定位更加细节的东西,比如你想在某个目录下找到一些赋予其拥有者和管理员可写的权限( if you wanted to find files which are writable by both thei

Linux文件查找之find&locate

Linux文件查找之find&locate 一.概述 Linux系统核心的思想之一"一切皆文件",对于这么多的文件,如何快速查找过滤呢?下面我们就看看系统提供的文件查找命令find和locat,熟练使用find命令是运维人员的必经之路 二.find的用法及示例 1.find特点 查找速度略慢 精确查找 实时查找 只能搜索有读取和执行权限的目录 2.find用法 用法:find  [options]  [查找路径]  [ 查找条件]  [处理动作] 查找条件: 根据文件类型查找

Linux自学第二天(权限管理命令、文件搜索命令、帮助命令)

添加用户两步走:1.useradd username   2.passwd ps  权限管理命令 命令名称:chmod  ->>change the permissions mode of a file 命令所在路径:/bin/chmod 执行权限:所有用户 语法:chmod [{u g o} {+-=}{rwx}][文件或目录] [mode = 421] [文件或目录] +:增加权限 -:减少权限 =:直接赋予权限 掌握的重点是用数字的方式进行权限控制,r=4 w=2 x=1. rwxr-x

Linux下各种查找命令(find, grep, which, whereis, locate)

find命令 find < path > < expression > < cmd > path: 所要搜索的目录及其所有子目录.默认为当前目录. expression: 所要搜索的文件的特征. cmd: 对搜索结果进行特定的处理. 如果什么参数也不加,find默认搜索当前目录及其子目录,并且不过滤任何结果(也就是返回所有文件),将它们全都显示在屏幕上. find命令常用选项及实例 -name 按照文件名查找文件. find /dir -name filename 在/