whereis
[root@centos /]# whereis
用法:
whereis [选项] 文件
选项:
-b 只搜索二进制文件
-B <目录> 定义二进制文件查找路径
-m 只搜索 man 手册
-M <目录> 定义 man 手册查找路径
-s 只搜索源代码
-S <目录> 定义源代码查找路径
-f 终止 <目录> 参数列表
-u 搜索不常见记录
-l 输出有效查找路径
- whereis 只找几个特定的目录 ,并没有全系统 的去查询 不像find 所以它很快。
- whereis 主要针对的**/usr/bin,/usr/sbin/ ,/usr/share/man 这几个目录 来进行查找 不适合找文件 。
- 可以使用 whereis -l 来查看特定目录
which
which [选项] 可执行文件
-
选项
- -a 将所有PATH目录中可以找到的命令均列出 ,而不止第一个被找到的命令名称
-
这个命令是根据 【PATH】这个环境变量所规范的路径 ,去查找 执行文件 的文件名,所以重点是找出执行文件。which 后面接的是完整文件名
locate
locate [选择参数] [样式]
-
选项
- -b, --basename # 仅匹配路径名的基本名称
-c, --count # 只输出找到的数量
-d, --database DBPATH # 使用DBPATH指定的数据库,而不是默认数据库 /var/lib/mlocate/mlocate.db
-e, --existing # 仅打印当前现有文件的条目
-0, --null # 在输出上带有NUL的单独条目
-S, --statistics # 不搜索条目,打印有关每个数据库的统计信息
-q # 安静模式,不会显示任何错误讯息。
-P, --nofollow, -H # 检查文件存在时不要遵循尾随的符号链接
-l, --limit, -n LIMIT # 将输出(或计数)限制为LIMIT个条目
-n # 至多显示 n个输出。
-m, --mmap # 被忽略,为了向后兼容
-r, --regexp REGEXP # 使用基本正则表达式
–regex # 使用扩展正则表达式
-q, --quiet # 安静模式,不会显示任何错误讯息
-s, --stdio # 被忽略,为了向后兼容
-o # 指定资料库存的名称。
-h, --help # 显示帮助
-i, --ignore-case # 忽略大小写
-V, --version # 显示版本信息
- -b, --basename # 仅匹配路径名的基本名称
-
locate 在 /var/lib/mlocate 下建立了一个数据库,它会更新和收集系统目录数据,它更新数据库可由 updatedb命令来刷新。
-
updatedb根据 /etc/updatedb.conf的设置 去查找系统硬盘内的文件 ,并更新 /var/lib/mlocate 内数据库的文件
-
每个Linux发行版本的不同,它默认更新locate数据库的时间也不同,可自行添加 定时任务 去更新 (crontab)
find
find [选项] 【参数】
-
选项
-
-amin<分钟>:查找在指定时间曾被存取过的文件或目录,单位以分钟计算
-atime<24小时数>:查找在指定时间曾被存取过的文件或目录,单位以24小时计算;
-cmin<分钟>:查找在指定时间之时被更改过的文件或目录;
-cnewer<参考文件或目录>查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录;
-ctime<24小时数>:查找在指定时间之时被更改的文件或目录,单位以24小时计算;
-daystart:从本日开始计算时间;
-depth:从指定目录下最深层的子目录开始查找;
-empty:寻找文件大小为0 Byte的文件,或目录下没有任何子目录或文件的空目录;
-path<范本样式>:指定字符串作为寻找目录的范本样式;
-exec<执行指令>:假设find指令的回传值为True,就执行该指令;
-gid<群组识别码>:查找符合指定之群组识别码的文件或目录;
-group<群组名称>:查找符合指定之群组名称的文件或目录;
-inum<inode编号>:查找符合指定的inode编号的文件或目录;
-mtime<24小时数>:查找在指定时间曾被更改过的文件或目录,单位以24小时计算;
-name<范本样式>:指定字符串作为寻找文件或目录的范本样式;
-newer<参考文件或目录>:查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录;
-nogroup:找出不属于本地主机群组识别码的文件或目录;
-noleaf:不去考虑目录至少需拥有两个硬连接存在;
-nouser:找出不属于本地主机用户识别码的文件或目录;
-perm<权限数值>:查找符合指定的权限数值的文件或目录;
-print:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式为每列一个名称,每个名称前皆有“./”字符串;
-print0:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式为全部的名称皆在同一行;
-printf<输出格式>:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式可以自行指定;
-prune:不寻找字符串作为寻找文件或目录的范本样式;
-regex<范本样式>:指定字符串作为寻找文件或目录的范本样式;
-size<文件大小>:查找符合指定的文件大小的文件;
-true:将find指令的回传值皆设为True;
-type<文件类型>:只寻找符合指定的文件类型的文件;
-uid<用户识别码>:查找符合指定的用户识别码的文件或目录;
-used<日数>:查找文件或目录被更改之后在指定时间曾被存取过的文件或目录,单位以日计算;
-user<拥有者名称>:查找符和指定的拥有者名称的文件或目录;
-version或——version:显示版本信息;
-
-
-type 常用的类型参数
- f --普通 文件
- l – 符号连接
- d – 目录
- c – 字符设备
- b – 块设备
- s – 套接字(scort)
- p --FIFO
-
find . -type f 时间戳
-
UNIX/Linux文件系统每个文件都有三种时间戳:
-
访问时间(-atime/天,-amin/分钟):用户最近一次访问时间。
-
修改时间(-mtime/天,-mmin/分钟):文件最后一次修改时间。
-
变化时间(-ctime/天,-cmin/分钟):文件数据元(例如权限等)最后一次修改时间。
find .-type f -atime -7 # 搜索最近七天内被访问过的所有文件
-
-
-size 支持单位
b | c | w |
---|---|---|
K | M | G |
- -uid n : n 为数字可以在 /etc/passwd中查看
- 其实这个和 **-user ** 作用是一样的。
- -gid n == -group
find / -type f -user root -exec chown tom {} \;
```这个 -exec 和 -ok 是一样只不过 -ok 会给出提示是否执行相应的操作```
find $home/. -name "*.txt" -ok rm {} \;
-->删除当前用户家目录里所有.txt的文件 并给出提示
find /var/log -type f -mtime +30 -name "*.log" -exec cp /$home/log {} \;
--> 就是把30天以前的/var/log下的所有以.log结尾的文件 cp 到 当前用户家目录 下的log目录 中
ps : -exec 后面跟的命令不支持命令别名–>比如:ll 必须写 ls -l
-
-perm mode 查找 文件 权限
- -perm 4700 == >指权限 等于 4700 的
- -perm -4700 ==>指权限 大于 4700的
- -perm /4700 ==>指权限 小于 4700的
- 就是去比对 r w x
find /usr/bin /usr/sbin -perm -6000 --> 意指 在这两个目录 中去找 有 SUID (4) 和 SGID (2) 的权限的文件
转载:https://blog.csdn.net/zzsonyzz12/article/details/105678761