Liunx要查找某个文件,但不知道放在哪里,可以通过下面命令来查找:
(1)which 查看可执行文件的位置
(2)whereis 查看文件的位置
(3)locate 配合数据库查看文件位置
(4)find 实际搜查硬盘查询文件名称
1.which指令
在PATH变量指令路径中,搜索某个系统指令位置,并且返回第一个搜索结果。
-n 指定文件名长度,指定的长度必须大于或等于所有文件最长文件名;
-p 与-n参数相同,但此处的包括文件路径
-w 指定输出时栏位宽度
-v 显示版本信息
实例:
2.whereis指令
只能用于程序名的搜索,只搜索二进制文件(参数 -b)、man说明文件(参数 -m)和源代码文件(参数-s),还具有搜索源代码、指定备用搜索路径和搜索不寻常项的能力。
相对find命令,whereis的查找速度较快,它是从数据库文件中查找,而find命令是遍历硬盘查找的。
-b (binary) 定位可执行文件;
-m 定位帮助文件;
-s (source) 定位源代码文件;
-u 搜索默认路径下除可执行文件、源代码文件和帮助文件以外的其他文件;
-B 指定搜索可执行文件的路径;
-M 指定搜索帮助文件的路径;
-S指定搜索源文件的路径;
范例:根据不同身份查找与passwd相关文件:
3.locate指令
locate寻找的数据是从已创建数据库/var/lib/mlocate/里面的数据查找的,速度是很快的,而数据库的创建默认方式是每天执行一次,所以新创建文件肯定找不到,要用updatedb命令来更新数据库(要等数分钟时间)。
-u / -U 建立资料库,-u会从根目录开始,-U可以指定开始位置;
-e 将排除在寻找范围之外
-l 启动安全模式(在安全模式,使用者不会看到权限无法看到档案)
-f 将特定档案系统排除在外
-q 安静模式,不会显示任何错误信息
-n 至多显示n个输出;
-r 使用正规运算式做寻找条件;
-o 指定资料库存名称;
-d 指定资料库的路径;
-h 显示辅助信息;
-v 显示更多信息;
-V 显示程式版本讯息;
实例:
4.find指令
find命令在目录结构搜索文件,并执行指定的操作。
(1)与时间相关的参数
-atime 访问时间,文件最后被读取时间,用touch命令修改当前时间;
-ctime 变更时间,文件本身最后被变更的时间,变更动作可以使chmod、chgrp、mv等等;
-mtime 修改时间,件内容最后被修改的时间,修改动作可以使echo重定向、vi等等;
-newser file:列出比file文件还早的文件;
实例:
(2)与用户名或用户组有关的参数
-uid n:n为数字,这个数字是用户的账号ID,即UID,这UID是纪录在/etc/passwd里面的账号名称对应数字;
-gid u :n为数字,这个数字是用户组名的ID,即GID,这个GID纪录在/ect/group中;
-user name :name为用户账号名称,如dmatsai;
-group name:name为用户组名,例如users;
-nouser:寻找文件的所有者不存在/etc/passwd的人;
-nogroup:寻找文件的用户组不存在/ect/group中的文件。
如果你想知道某个用户在系统下创建什么,使用上面参数就能够找出。
实例:
(3)与文件权限及名称相关的参数
-name filename:查找文件名为fillename的文件;
-size [+-] SIZE:查找比SIZE大还是小的文件,SIZE的规格为:c:代表byte;k:代表1024bytes;
-type TYPE:查找文件类型为TYPE的,类型有:(1)一般正规文件(f);(2)设备文件(b,c);(3)目录(d);(4)链接文件(l);(5)socket套接字(s);(6)FIFO普通文件(f);
-depth:在查找文件时,首先查找当前目录的文件,然后在目录中查找;
-fstype:查找位于某一类型文件系统的文件,这些文件系统类型在配置文件/etc/fstab找到;
-mount:在查找文件不跨越文件系统mount点;
-follow:如果find命令遇到符号链接文件,就跟踪链接所指向文件;
-cpio:对匹配文件使用cpio命令,将这些文件备份到磁带设备中;
-perm mode:查找文件权限“刚好等于”mode的文件,这个mode1类似chmod的属性值,举例:-rwsr-xr-x属性值为4755;
-perm -mode:查找文件权限“包含任一mode的权限”的文件,举例:我们查找-rwxr-xr-x,即-perm +755时,但一个文件属性为 -rw-------也会列出来,因为它有-rw...属性存在。
实例:
(4)其他参数
-exec command:command为其他命令,-exec后面可再接其他的命令来处理查到的结果。
-print:将结果打印到屏幕上,这个操作是默认操作。
-ok:和-exec作用相同,只不过以一种更安全的模式来执行让参数所给出的shell命令,在执行每一个命令之前都会给出提示,用户确定是否执行。