【Linux】指令与文件的搜寻

【Linux】指令与文件的搜寻,第1张

概述指令文件搜寻1 . 指令文件名的搜寻2. 文件文件名的搜寻1 . 指令文件名的搜寻1.1 which(寻找可执行文件)命令:which 【-a】 command-a : 将所有有PATH目录中可以找到的指令均列出**范例一:**搜寻ifconfig这个指令的完整文件名范例二找出which的文件名竟然会有两个 which ,其中一个是 alias 这玩意儿呢!那是啥?那就...

指令与文件的搜寻 1 . 指令文件名的搜寻2. 文件文件名的搜寻

1 . 指令文件名的搜寻

1.1 which(寻找可执行文件)

命令:which 【-a】 command
-a : 将所有有PATH目录中可以找到的指令均列出

**范例一:**搜寻ifconfig这个指令的完整文件名

范例二找出which的文件名
竟然会有两个 which ,其中一个是 alias 这玩意儿呢!那是啥?
那就是所谓的“命令别名”,意思是输入 which 会等于后面接的那串指令啦!

范例三:找出history这个指令的完整文件名


在上图我们发现history这个指令招不到,我们的root命令是可以执行history这个命令的

注意点:
which这个指令是找的PATH这个环境变量所规范的路径,但是有的指令是是bash内置的指令,所有which搜索不到,那么要搜索bash的指令就需要使用type

2. 文件文件名的搜寻

在linux下有三个指令来搜索文件名
find
whereis
locate

2.1 whereis(只能在特定目录寻找文件名)
whereis 主要是针对 /bin /sbin 下面的可执行文件, 以及 /usr/share/man 下面的 man page 文

参数
-l :可以列出 whereis 会去查询的几个主要目录而已
-b :只找 binary 格式的文件
-m :只找在说明文档 manual 路径下的文件
-s :只找 source 来源文件
-u :搜寻不在上述三个项目当中的其他特殊文件
whereis这个命令可以搜索到的文件可以使用whereis -l来查看

这个图没有截取完,可以自己去试着查看



2.2 localte

-i :忽略大小写的差异;
-c :不输出文件名,仅计算找到的文件数量
-l :仅输出几行的意思,例如输出五行则是 -l 5
-S :输出 locate 所使用的数据库文件的相关信息,包括该数据库纪录的文件/目录数量等
-r :后面可接正则表达式的显示方式

范例一:找出passwd的文件,只列出5个

范例二寻找我们自己创建的文件
确实很方便的


2.3 locate的寻找速度
由于locate指令是直接在已创建的数据库/var/lib/mlocate里边的数据,所以是很快的。
关于这个数据库是每天都会更新一次的

2.4 关于locate数据库更新
这个数据库是每天都会更新一次的,但是有个问题就是假如你新创建了一个文件,但是没有达到这个更新时间,那么就查不到的,下面我们来试验一下


上图会发现是搜索不到的。

那么我们就到了我们的updatedb这个指令上场了,这个时候就可以查到了


2.5 find指令时间相关的查询
find指令的用法就非常多了下来我们一点一点的解析

与时间相关的参数
-mtime n :n 为数字,意义为在 n 天之前的“一天之内”被更动过内容的文件;
-mtime +n :列出在 n 天之前(不含 n 天本身)被更动过内容的文件文件名;
-mtime -n :列出在 n 天之内(含 n 天本身)被更动过内容的文件文件名。
-newer file :file 为一个存在的文件,列出比 file 还要新的文件文件名

范例一:找出系统24小时内有过改动的文件

find / -mtime 0

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

2.6 find指令使用者或者群组文件的查询

-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 搜寻。

范例一:搜寻/learn下面属于kaka用户的文件

范例二:搜索属于kaka群组的文件


范例三:搜寻不属于任何人的文件

find / -nouser

2.7 搜寻文件名称跟权限的文件

-name filename:搜寻文件名称为 filename 的文件;
-size [±]SIZE:搜寻比 SIZE 还要大(+)或小(-)的文件。这个 SIZE 的规格有:
c: 代表 Byte, k: 代表 1024Bytes。所以,要找比 50KB
还要大的文件,就是“ -size +50k ”
-type TYPE :搜寻文件的类型为 TYPE 的,类型主要有:一般正规文件 (f),设备文件 (b,c),
目录 (d),链接文件 (l),socket (s),及 FIFO (p) 等属性。
-perm mode :搜寻文件权限“刚好等于” mode 的文件,这个 mode 为类似 chmod
的属性值,举例来说, -rwsr-xr-x 的属性为 4755 !
-perm -mode :搜寻文件权限“必须要全部囊括 mode 的权限”的文件,举例来说,
我们要搜寻 -rwxr–r-- ,亦即 0744 的文件,使用 -perm -0744,
当一个文件的权限为 -rwsr-xr-x ,亦即 4755 时,也会被列出来,
因为 -rwsr-xr-x 的属性已经囊括了 -rwxr–r-- 的属性了。
-perm /mode :搜寻文件权限“包含任一 mode 的权限”的文件,举例来说,我们搜寻
-rwxr-xr-x ,亦即 -perm /755 时,但一个文件属性为 -rw-------
也会被列出来,因为他有 -rw… 的属性存在!

范例一:找出文件名为kaka.PHP的文件


范例二:找出文件名包含kaka的文件


范例三:找出learn下的目录


关于perm特殊权限的搜索就不写了,没有多大的意义

总结

以上是内存溢出为你收集整理的【Linux】指令与文件的搜寻全部内容,希望文章能够帮你解决【Linux】指令与文件的搜寻所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1013828.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存