Linux命令与文件的查询
1 脚本文件名的查询
- which(寻找“执行文件“)
参数-a :将所有由path目录中可以找到的命令均列出,而不止第一个被找到的目录名称
- 以 ifconfig为例
可以找到正确的文件执行名
- 以which 本身为例
alias--->命令别名,输入which会等于后面接的那串命令
- 以常用的cd指令为例
为什么会找不到呢?
原因在于which的查找机制,which是默认查找PATH内所规范的目录,cd是bash内置的命令当然找不到啦,这里我们使用type指令
可以看出cd是一个shell builtin 即就内置命令
2 文件名的查找
通常而言我们不常使用find指令,由于find指令需要在内存中查找,速度会很慢,所以我们会先使用whereis和locate来检查,如果找不到再使用find,whereis和locate都是使用数据库来查找,所以速度很快。
- whereis(寻找特定文件)
参数:-b :只查找二进制格式文件
-m :只找在说明文件manual路径下的文件
-s :只找source源文件
-u :查找不再上述三个选项中的其他文件
- 以ifconfig指令为例
只找出跟passwd有关的是”说明文件“
- locate
locate指令使用非常简单,直接后面输入”文件部分名称“即可
参数:-i 忽略大小写的差异
-r 后面可接正则表达式的显示方式
- 以passwd为例
只要含有 passwd在其中,就会被显示出来。
使用限制:由于locate查找数据是由 已创建的数据库库/var/lib/mlocata/所查到的,数据库信息需要更新,所以当我们新建一个文件夹后查找这个文件
由于数据库并未更新,所以会查不到,我们可以采用手动更新数据库的方式。---->直接输入updatesb
- find指令
这是一个很重要的指令,直接在内存中查找。
时间参数:以-mtime为例
-mtime n :n为数字,意义为在n天之前的”一天之内“被更改过的文件
-mtime +n :列出在n天之前(不含n天本身)被更改的文件名
-mtime -n :列出在n天之内(含n天本身)被更改过的文件名
-newer file :file为一个存在的文件,列出比file还要新的文件名
图示为:
以find /var -mtime4 为例时间轴为:
与用户或用户组有关的参数
-uid n:这个数字是用户的账号ID,记录在/etc/passwd中与账号名称对应的数字
-gid n:n为用户组名的ID
-username :name为用户账号名称 如root
-groupname:name为用户组名
-nouser :寻找文件所有者不存在/etc/passwd的人
-nogroup:寻找文件的所用户组不存在于etc/group中的文件
- 查找 /home下属于dz的文件:
查找根目录中不属于任何人的文件
-name filename 查找文件名为 1 的文件
-name [+ -]size 查找比size还要大的文件 size规格:c:代表byte,k代表1024bytes 要找
以找比50kb小的文件为例
-type type:查找类型为type的文件
以查找正规文件为例(f)
文件权限参数
-pern mode :查找文件类型刚好等于 mode的文件
-pern -mode:查找文件权限 必须要全部包含mode权限的文件
-pern +mode 查找文件权限 包含任意mode权限的文件
比如说我们查找-rwx r-x r-x 即 -pern+755时候也会包括一个-rw- --- ---文件存在,因为他 包含了-rw属性
查找权限为777的文件
权限为包含任意一个777以内权限的文件
权限为 必须包含777所有权限的文件
其他操作:
-exec command:commad 为其他命令,-exec后面可接其他命令来处理查找的结果
如 将权限包含7000其中之一的文件 使用ls -l列出来
以find / perm +7000 -exec ls -l {} \; 指令为例