linux 文件查找命令集:find,locate,wheres,which,type
文章目录
- 前言
- find命令
- 命令格式:
- 常用选项:
- 举例使用
- locate命令
- 命令格式
- 使用实例
- whereis命令
- 使用过程:
- which命令
- type命令
前言
在linux系统中一切皆文件,此时我们想要从海量的文件中快速定位中我们想要的文件来,需要指定的命令来操作。以下为收集的各个命令,以及其优劣,使用方式。
find命令
centos下:rpm包findutils-4.5.11-3.el7.x86_64
find是最常用也是最强大的查找命令,它可以查找任何类型的文件。
命令格式:
find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression]
常用选项:
-name
:按文件名来查找文件-user
:按照文件的属主来查找文件-group
:按照文件所属的组来查找文件-perm
:按照文件权限来查找文件-prune
:不在当前指定目录中查找
举例使用
已知文件stdio.h
存放在/usr
大目录下的多个子目录,cd /usr目录下
find -name "stdio.h"
表示在当前目录查找文件名称为stdio.h
的文件
find . -path ./include -prune -o -name "stdio.h"
在当前目录查及其子目录查找名称为stdio.h
的文件,但是跳过include目录;
这里的-o参数表示或关系,即两者中只要有一个表达式满足true即可输出;
同-a
和-not
,-a
表示只要有一个表达式不满足则不输出,-not
表示对查找的结果进行取反
find . -path ./include -o -name "stdio.h" -print
将匹配到的内容文件输出到标准输出中
find / -user ceph
查找文件所有者为ceph
的文件
find / -nouser -a -nogroup
查找系统中不属于任何人,任何用户组的文件(对于该部分文件需要保持警惕)
find /usr -mtime -4
查找文件更新日时在距现在时刻4天以内的文件
find /usr -mtime +4
查找文件更新日时在距现在时刻5天以上的文件
find /usr -mtime 4
查找文件更新日时在距现在时刻4天以上5天以内的文件
find / -type [c]
根据文件属性进行查找
其中[c]包括如下属性:
p
管道文件/run/systemd/initctl/fifo
b
block块设备文件,类似与/dev/sdb磁盘盘符这种c
字符设备,类似于/dev/tty63
d
directory 目录文件f
regular file 普通文件l
symbolic link 链接文件s
socket 套接字文件
find / -size +10M
按照文件大小进行查找,+表示大于10M的文件,-
表示小于10M的文件,同时还支持K,G,b(512B的块大小)的单位查找
locate命令
centos下:rpm包为mlocate-0.26-5.el7.x86_64
locate命令实际是"find -name"的另一种写法,但是查找方式跟find不同,它比find快得多。
因为它不搜索具体目录,而是在一个数据库(/var/lib/mlocate/mlocate.db
)中搜索指定的文件。次数据库含有本地文件的所有信息,此数据库是linux系统自动创建的,数据库由updatedb程序来更新,updatedb是由cron daemon周期性建立的,默认情况下为每天更新一次,所以用locate命令你搜索不到最新更新的文件,除非你在用locate命令查找文件之前手动的用updatedb命令更新数据库。
命令格式
locate [OPTION]... [PATTERN]...
主要使用的参数含义如下:
-A
打印所有匹配到的文件-b
精确匹配需要查找的文件,即如果文件命中包含我们要查找的则不打印-c
仅打印匹配到文件个数-d --database DBPATH
指定自己的文件数据库-e
打印当前系统存在的想要查找的文件-i
忽略匹配出来的文件的差异-m
已经被忽略了,为了向后兼容-l count 或者 -n count
限制输出的条数-r
支持普通的正则匹配,类似locate -r ceph-osd.[0-9]
查找ceph-osd.后面有一个数字的文件-w
精确匹配,默认不加也是精确匹配
使用实例
这里关于参数详细的使用就不多说,以上都已经提到
这里简单说一下locate的正则匹配,基本的正则符号参考正则符号
举例:
locate -r ceph-osd.[0-9].log$
查找以包含ceph-osd
的字符串,且在ceph-osd.和.log之间有一个数字,且以log字符串结尾的文件
我们在使用locate的很多时候发现一个新的文件locate不到,关于locate命令的基本查找过程上面也已经提到,因为locate的文件获取是从操作系统定时更新的数据库中获取,但是新的文件可能还没有更新到数据库(还没有被系统设置的定时任务去更新数据库),此时我们需要手动更新以下该数据库。
关于mlocate.db数据库的更新任务在路径为/etc/cron.daily/mlocate
中,内容如下
#!/bin/sh
nodevs=$(< /proc/filesystems awk '$1 == "nodev" && $2 != "rootfs" { print $2 }')
renice +19 -p $$ >/dev/null 2>&1
ionice -c2 -n7 -p $$ >/dev/null 2>&1
/usr/bin/updatedb -f "$nodevs"
我们做出如下测试
[root@node2 ~]# echo "i am a man" >test.cron
[root@node2 ~]# locate test.cro
[root@node2 ~]# updatedb 手动跟新数据库
[root@node2 ~]# locate test.cron 手动更新即可发现我们创建的文件已经存在
/root/test.cron
whereis命令
centos下的rpm包util-linux-2.23.2-26.el7.x86_64
whereis命令只能用于搜索二进制文件(-b)、源代码文件(-s)、说明文件(-m)。如果省略参数则返回所有的信息
使用起来也是非常简单
使用过程:
[root@node2 ~]# whereis locate
locate: /usr/bin/locate /usr/share/man/man1/locate.1.gz
[root@node2 ~]# whereis -b locate
locate: /usr/bin/locate
[root@node2 ~]# whereis -m locate
locate: /usr/share/man/man1/locate.1.gz
[root@node2 ~]# whereis -s locate
locate:[root@node2 ~]#
该命令能够方便编译机上的组件以及对应源码的查找
which命令
which命令是在PATH变量指定的路径中搜索指定的系统命令的位置。用echo $PATH可显示当前PATH变量的值
[root@node2 ~]# echo $PATH
/usr/lib64/qt-3.3/bin:/root/perl5/bin:/b_iscsi/bn_cli:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[root@node2 ~]# which locate
/bin/locate
type命令
type命令主要用于区分一个命令到底是shell自带的还是外部独立的二进制文件提供的。如果是shell自带的则会提示此命令为shell buildin,否则会列出命令的位置。例如:cd为shell自带的命令,当用which查找时,which会按照PATH变量设置的路径进行搜索,如果不是shell自带命令,则结果会显示no cd in...
;用type cd则显示cd为shell buildin命令。ssh不是shell自带命令,用type时会显示ssh的路径。
[root@node2 ~]# type cd
cd is a shell builtin
[root@node2 ~]# type find
find is hashed (/bin/find)
linux 文件查找命令集:find,locate,wheres,which,type相关推荐
- linux文件查找命令find,locate
简介 vi : visual interface, 可视化接口.vim(VI IMproved) vim编辑器:文本编辑器.文本:纯文本,ASCII text; unicode; 文本编辑器种类: 行 ...
- linux进入文件全文搜索命令,Linux 文件查找命令详解
大家好,我是"孤云幕雨":祝大家中秋快乐,今天给大家带来的是<Linux文件查找命令> 一.locate:依赖于事先构建的索引 v依赖于事先构建的索引:索引的构建是在系 ...
- Linux文件查找命令find,xargs详述
Linux文件查找命令find,xargs详述 总结:zhy2111314 来自:LinuxSir.Org 整理:北南南北 摘要: 本文是find 命令的详细说明,可贵的是针对参数举了很多的实例,大量 ...
- Linux文件查找命令find用法整理(locate/find)
Linux文件查找查找主要包括:locate和find 1.locate 用法简单,根据数据库查找,非实时,用法: locate FILENAME 手动更新数据库(时间可能较长) updatedb 2 ...
- Linux文件查找命令具体解释-which whereis find locate
原创BLog.转载请注明出处 http://blog.csdn.net/hello_hwc? viewmode=contents which命令 首先查看man which的说明 which - sh ...
- linux下查找命令which/whereis/locate/find的对比和总结
linux下的查找命令有很多,常用的有which.whereis.locate.find.那么这4个命令之间各自有什么特点,又有什么区别?什么时候该用哪个才最合适呢?详细不少人没法给出一个精确的答案, ...
- 【转】Linux的五个查找命令:find,locate,whereis,which,type
原文网址:http://www.ruanyifeng.com/blog/2009/10/5_ways_to_search_for_files_using_the_terminal.html 最近,我在 ...
- Linux基础(十一)--Linux文件查找命令Find详解
本文详细介绍了Linux中Find命令的相关知识 在文件系统中,我们常常会去查找某个文件,而在Linux中locate和find都是用于查找文件的. 其中locate命令是非实时查找,它会根据数据库进 ...
- linux文件查找命令
Linux下文件搜索.查找.查看命令 1.最强大的搜索命令:find 查找各种文件的命令 2.在文件资料中查找文件:locate 3.搜索命令所在的目录及别名信息:which 4.搜索命令所在的目录及 ...
最新文章
- python网页模板_python-找不到HTML模板
- 一个 union all 的all
- 视频软件会声会影支持哪些视频格式?
- gdrive无限网盘挂载systemd文件
- edg击败we视频_lpl2018春季赛2月4日WEvsEDG比赛视频:EDG2:1击败WE
- php手机编程ios,在iOS上实现生产力级别PHP编程
- 2015武汉大学计算机学院录取,2015年武汉大学计算机专业研究生录取名单
- linux mint回收站,Autotrash:定时自动删除旧垃圾的命令行工具
- C语言基础入门48篇_30_二维数组的定义与使用(二维数组的定义:type 数组名[行][列]、二维数组的初始化、二维数组的引用)
- 用php计算身体质量指数,BMI计算器,身体质量指数BMI在线计算
- 预算三万配一台电脑,要全套,包括显示器,音箱,耳机,键盘鼠标这些,怎么搭配才好?
- 【二叉树】根据后续和中序遍历输出前序遍历 [建树+非建树做法]
- java 自动转 golang_JAVA转Golang
- udt4 VS udt gateway
- Python 中的Path类
- python解压文件中哪个是安装包_python解压文件格式的基本方法
- HIDL服务死亡通知实例 hidl_death_recipient
- CSS基本知识点总结
- 解密DeathStalker
- 【深度强化学习】强化学习的基本概念
热门文章
- Android手机指令操作释疑
- MySql按日期进行统计(前一天、本周、某一天)[转载]
- [导入]实时数据库的经典书
- OpenCV+python:直方图的应用(一)
- linux定时任务定向到空,Linux 定时任务下 /dev/null 21 相关知识说明
- 用python做一个数据查询软件_Python实现功能简单的数据查询及可视化系统
- android receiver 通知,android – 来自BroadcastReceiver的呼叫通知
- win10系统优化计算机,全面优化win10电脑系统详细教程 | 专业网吧维护
- 您有一个新的订单mp3在线_Airtable,不仅仅是强大的在线表格应用,而是一个新物种...
- python检查_python设置检查点简单实现