命令与文件的查询

一、which命令:如which ls
[[email protected] ~]# which [-a] command
选项或参数:
-a :将所有由 PATH 目录中可以找到的命令均列出,而不止第一个被找到的命令名称

范例一:分别用root与一般帐号搜寻 ifconfig 这个命令的完整档名
[[email protected] ~]# which ifconfig
/sbin/ifconfig <==用 root 可以找到正确的运行档名喔!
[[email protected] ~]# su - vbird <==切换身份成为 vbird 去!
[[email protected] ~]$ which ifconfig
/usr/bin/which: no ifconfig in (/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin
:/home/vbird/bin) <==见鬼了!竟然一般身份帐号找不到!
# 因为 which 是根据使用者所配置的 PATH 变量内的目录去搜寻可运行档的!所以,
# 不同的 PATH 配置内容所找到的命令当然不一样啦!因为 /sbin 不在 vbird 的
# PATH 中,找不到也是理所当然的啊!了乎?
[[email protected] ~]$ exit <==记得将身份切换回原本的 root

范例二:用 which 去找出 which 的档名为何?
[[email protected] ~]# which which
alias which=‘alias | /usr/bin/which --tty-only --read-alias --show-dot ‘
/usr/bin/which
# 竟然会有两个 which ,其中一个是 alias 这玩意儿呢!那是啥?
# 那就是所谓的『命令别名』,意思是输入 which 会等於后面接的那串命令啦!
# 更多的数据我们会在 bash 章节中再来谈的!

范例三:请找出 cd 这个命令的完整档名
[[email protected] ~]# which cd
/usr/bin/which: no cd in (/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin
:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin)
# 瞎密?怎么可能没有 cd ,我明明就能够用 root 运行 cd 的啊!

二、whereis命令 寻找的是特定文件 可以查找二进制文件,也能查找到文件的一些帮助文档,如果只想查找二进制文件,可以加选项-b;如只想查找帮助文档,可以加选项-m

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

范例一:请用不同的身份找出 ifconfig 这个档名
[[email protected] ~]# whereis ifconfig
ifconfig: /sbin/ifconfig /usr/share/man/man8/ifconfig.8.gz
[[email protected] ~]# su - vbird <==切换身份成为 vbird
[[email protected] ~]$ whereis ifconfig <==找到同样的结果喔!
ifconfig: /sbin/ifconfig /usr/share/man/man8/ifconfig.8.gz
[[email protected] ~]$ exit <==回归身份成为 root 去!
# 注意看,明明 which 一般使用者找不到的 ifconfig 却可以让 whereis 找到!
# 这是因为系统真的有 ifconfig 这个『文件』,但是使用者的 PATH 并没有加入 /sbin
# 所以,未来你找不到某些命令时,先用文件搜寻命令找找看再说!

范例二:只找出跟 passwd 有关的『说明文件』档名(man page)
[[email protected] ~]# whereis -m passwd
passwd: /usr/share/man/man1/passwd.1.gz /usr/share/man/man5/passwd.5.gz

三、locate命令可以查找命令或文件,locate是在/var/lib/mlocate/mlocate.db该数据文件中查找的,mlocate每天生成一次,如果是刚创建的文件,可以无法立刻用该命令来查找,如果想立刻更新数据库文件,可以使用命令updatedb
locate的选项-i忽略大小写查找

[[email protected] ~]# locate [-ir] keyword
选项与参数:
-i :忽略大小写的差异;
-r :后面可接正规表示法的显示方式

范例一:找出系统中所有与 passwd 相关的档名
[[email protected] ~]# locate passwd
/etc/passwd
/etc/passwd-
/etc/news/passwd.nntp
/etc/pam.d/passwd
....(底下省略)....

updatedb:根据 /etc/updatedb.conf 的配置去搜寻系统硬盘内的档名,并升级 /var/lib/mlocate 内的数据库文件;
locate:依据 /var/lib/mlocate 内的数据库记载,找出使用者输入的关键字档名。

四、find命令:find 目录 -属性 属性值,如果不指明目录,则在当前目录下查找

[[email protected] ~]# find [PATH] [option] [action]
选项与参数:
1. 与时间有关的选项:共有 -atime, -ctime 与 -mtime ,以 -mtime 说明
-mtime n :n 为数字,意义为在 n 天之前的『一天之内』被更动过内容的文件;
-mtime +n :列出在 n 天之前(不含 n 天本身)被更动过内容的文件档名;
-mtime -n :列出在 n 天之内(含 n 天本身)被更动过内容的文件档名。
-newer file :file 为一个存在的文件,列出比 file 还要新的文件档名

范例一:将过去系统上面 24 小时内有更动过内容 (mtime) 的文件列出
[[email protected] ~]# find / -mtime 0
# 那个 0 是重点!0 代表目前的时间,所以,从现在开始到 24 小时前,
# 有变动过内容的文件都会被列出来!那如果是三天前的 24 小时内?
# find / -mtime 3 有变动过的文件都被列出的意思!

范例二:寻找 /etc 底下的文件,如果文件日期比 /etc/passwd 新就列出
[[email protected] ~]# find /etc -newer /etc/passwd
# -newer 用在分辨两个文件之间的新旧关系是很有用的!

时间参数真是挺有意思的!我们现在知道 atime, ctime 与 mtime 的意义,如果你想要找出一天内被更动过的文件名称, 可以使用上述范例一的作法。但如果我想要找出『4天内被更动过的文件档名』呢?那可以使用『 find /var -mtime -4 』。那如果是『4天前的那一天』就用『 find /var -mtime 4 』。有没有加上『+, -』差别很大喔!我们可以用简单的图示来说明一下:

find 相关的时间参数意义
图1、find 相关的时间参数意义
图中最右边为目前的时间,越往左边则代表越早之前的时间轴啦。由图1我们可以清楚的知道:

+4代表大於等於5天前的档名:ex> find /var -mtime +4
-4代表小於等於4天内的文件档名:ex> find /var -mtime -4
4则是代表4-5那一天的文件档名:ex> find /var -mtime 4

2. 与使用者或群组名称有关的参数:
-uid n :n 为数字,这个数字是使用者的帐号 ID,亦即 UID ,这个 UID 是记录在
/etc/passwd 里面与帐号名称对应的数字。这方面我们会在第四篇介绍。
-gid n :n 为数字,这个数字是群组名称的 ID,亦即 GID,这个 GID 记录在
/etc/group,相关的介绍我们会第四篇说明~
-user name :name 为使用者帐号名称喔!例如 dmtsai
-group name:name 为群组名称喔,例如 users ;
-nouser :寻找文件的拥有者不存在 /etc/passwd 的人!
-nogroup :寻找文件的拥有群组不存在於 /etc/group 的文件!
当你自行安装软件时,很可能该软件的属性当中并没有文件拥有者,
这是可能的!在这个时候,就可以使用 -nouser 与 -nogroup 搜寻。

范例三:搜寻 /home 底下属於 vbird 的文件
[[email protected] ~]# find /home -user vbird
# 这个东西也很有用的~当我们要找出任何一个使用者在系统当中的所有文件时,
# 就可以利用这个命令将属於某个使用者的所有文件都找出来喔!

范例四:搜寻系统中不属於任何人的文件
[[email protected] ~]# find / -nouser
# 透过这个命令,可以轻易的就找出那些不太正常的文件。
# 如果有找到不属於系统任何人的文件时,不要太紧张,
# 那有时候是正常的~尤其是你曾经以原始码自行编译软件时。

find命令的选项有 -name -iname(忽略大小写) -user -group
find可以同时用多个选择条件,条件之间可以是and(忽略不写),or,如 find / -user lee -or -group tom,该命令的意思就是在系统/目录下查找用户是Lee或者组是tom的所有文件
find / -size +2M -size -5M 该命令的意思是在本工作目录下查找文件大小大于2M同时小于5M的文件
find / -perm 222 该命令的意思是查找权限为222的文件,属于完全匹配
find / -perm +222该命令的意思是查找权限包含有222的文件,也就是ugo至少有一个w权限
find / -perm -222该命令的意思是查找权限包含有222的文件,也就是ugo每一个至少都要有一个w权限
也就是说权限的属性值前+表示或者or,-表示和and。
在这里,如果权限属性值只有一个数字,表示的是o,两个数字表示的是go,三个数字表示的是ugo。

时间: 2024-10-29 19:10:29

命令与文件的查询的相关文章

linux下命令与文件的查询

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

命令与文件的查询 where locate find

命令与文件查询:where,whereis, locate,find where:命令查找 whereis,locate:非实时查找工具:依赖于实现构建的索引,索引的构建是在系统较为空闲时自动进行(周期性任务),手动更新此数据库(updatedb)查找速度快,模糊查找 find: 文件查找,实时查找:查找速度略慢:精确查找 脚本文件名的查询: which查询执行文件 语法:which [-a]command 参数:-a:列出通过PATH查询到的所有命令都列出,而不是只是显示第一个被查询到的命令

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自学第二天(权限管理命令、文件搜索命令、帮助命令)

添加用户两步走: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 命令与文件的搜寻

平时会偶尔忘记一些命令或者文件,下面的这些命令能够帮我们快速的找到命令或者文件 1. 命令的搜寻 命令:which 功能:在PATH配置的目录下搜寻命令 用法:which [-a] [command] 参数: -a: 把从PATH配置的目录找到找到的所有指令都列出,而不是只显示第一个被找到的指令 例子1:查找man命令,有且仅显示一条查询结果 例子2:查找man命令,并显示所有的查询结果 由上面两个可以看出有没有参数-a的差别 注意点: 这个命令是根据PATH所配置的目录去搜寻待查命令,并且wh

攻城狮在路上(叁)Linux(十六)--- 命令与文件的查找

一.脚本文件的查询: 1.命令格式:which [-a] command; <==通过PATH来查找. -a:列出所有的,而不是仅列出第一个. 示例: which ifconfig; 注意:由于不同的用户PATH不同,所以结果或许也有区别. 二.文件名的查找: 1.whereis [-bmsu] 文件或目录名  <==通过数据库来查找,所以不同的用户查到的结果是一致的. 参数说明: -b:只找二进制格式的文件. -m:只找在说明文件manual路径下的文件. -s:只找source源文件. -

利用linux的df和du命令查看文件和目录的内存占用

文章目录 当磁盘大小超过标准时会有报警提示,这时如果掌握df和du命令是非常明智的选择. df可以查看一级文件夹大小.使用比例.档案系统及其挂入点,但对文件却无能为力. du可以查看文件及文件夹的大小. 两者配合使用,非常有效.比如用df查看哪个一级目录过大,然后用df查看文件夹或文件的大小,如此便可迅速确定症结. 做后台开发经常遇到磁盘占满的情况,毕竟不断有日志在生成,不断有文件在备份,如果长时间不管的话,总有一天会占用满. 题主有一天在发布java项目的时候,就发现提示 1 No space

Linux命令——Linux文件权限操作

基本知识 查看权限 命令:ls -l 查询结果如下 drwxrwxr-x 第1个字母:代表文件类型 第2~4字母:代表用户的权限 第5~7字母:代表用户组的权限 第8~10字母:代表其他的用户的权限 2:链接数 jingguoliang:所属用户 jingguoliang:所属用户组 4096:文件大小 Mar 21 09:31:最后修改时间 project:文件名 Linux文件类型 在Linux常见的文件类型有7种,分别如下所示 文件属性 文件类型 - 常规文件,即file d 目录文件 b

Linux 常用命令之文件和目录

1. cd 命令格式:cd  [dirName](cd和目录之间使用空格隔开) 作用:切换当前目录至dirName. 实例: cd /home 切换当前目录到/home (查看当前目录命令为pwd) cd .. 返回上一级目录 cd ../.. 返回上两级目录 cd ~ 进入个人的主目录 2. ls 命令格式:ls [选项] [目录名] (目录名为空时表示当前目录) 作用: 查看目录中的文件 常用选项: -a, –all 列出目录下的所有文件,包括以 . 开头的隐含文件. -l 除了文件名之外,