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)
相关文章:

oracle生成xml方法,oracle存储过程生成xml==转
1.创建如下存储过程,注意将其中location >d:\work之中的目录改为你本机的某个目录.create or replace procedure getXML(newContext_qry varchar2,rowSettag varchar2,rowTag varchar2,filename varchar2) is-- Input query string-- Input rowsetTag , the root…

打算看的书或正在看的书
打算看的书或正在看的书 《Data Structures and Algorithm Analysis in C》 正在看,这本书是在博客园上看到某个去google的大牛推荐的,的确,虽然数据结构,我已经很熟悉了,但是看这本书的时候,有一些细节我是…

Tutorial——使用Maven开发Cloud Driver
2019独角兽企业重金招聘Python工程师标准>>> Before You Start 开发之前,应有以下准备 Apache MavenCloudify调用云API的安全凭证,使用SSH访问你的机器,如果需要访问您的云的存储。 例如,通过以下步骤获得OpenStack的安…

[Machine Learning with Python] Data Visualization by Matplotlib Library
Before you can plot anything, you need to specify which backend Matplotlib should use. The simplest option is to use Jupyter’s magic command %matplotlib inline. This tells Jupyter to set up Matplotlib so it uses Jupyter’s own backend. Scatter Plot housin…

贪心:Burst Balloons 最少次数完成射击气球
已知在一个平面上有一定数量的气球,平面可以看作一个坐标系,在平面的x轴的不同位 置安排弓箭手向y轴方向射箭,弓箭可以向y轴走无穷远;给定气球的宽度 xstart ≤ x ≤ xend,问至少需要多少弓箭手,将全部气球打爆? 例如…

linux服务器加固的命令,Linux 服务器安全加固
一、summary随着互联网的发展,隐私以及安全被大家看的越来越重视,越来越多的重要交易正在通过网络完成,与此同时数据被损坏、截取和修改的风险也在增加。优秀的系统应当拥有完善的安全措施,应当足够坚固、能够抵抗来自Internet的侵…

devexpress toolbar 填充整行宽度
设置 bar 的 optionsBar.UseWholeRow True 然后可设置Bar 中 Item的右对齐属性。转载于:https://www.cnblogs.com/perpetual/p/3756101.html

【java】staitc
一、static变量 二、static方法 三、static代码块 四、static类:只能是内部类

002.Docker安装部署
一 docker安装-CentOS系统1.1 docker自动安装脚本 1 rootdocker:~# wget -qO- https://get.docker.com/ | sh2 或——3 rootdocker:~# curl -sSL https://get.docker.com/ | sh 注意:若出现以下错误,可使用yum解决依赖——Delta RPMs disabled because /…

贪心:expedition 最优加油方法
已知一条公路上,有一个起点与一个终点,这之间有n个加油站;已知从这n个加 油站到终点的距离d与各个加油站可以加油的量l,起点位置至终点的距离L与起 始时刻油箱中汽油量P;假设使用1个单位的汽油即走1个单位的距离,油箱没有 上限&am…

UML for Java Programmers之dx实战
dx是一套简单的开发规则。它说白了就是迭代开发,在短周期内迭代处理”所有事情“,这里所指的”所有事情“包括需求、分析、设计、实现、测试和文档等等。 它的大概流程是这样:1. 初始探索 跟客户坐下来一起讨论系统到底是做什么的。在这个…

linux进程池动态维护,可直接商用的跨平台c,c++动态线程池,任务池stpool库
stpool是一个轻便高效的动态跨平台的线程池/任务池库.常规线程池的缺点:1. 总是启动时候就开启固定数目的线程,而不管系统的繁忙状态(这是很浪费系统资源的).2. 当任务繁重的时候,即使线程池被设计成可继续添加更多线程来服务,由于实时服务状…

hdu 1286( 欧拉函数 )
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid1286 数学题真的是有点吃不消了。。。 View Code 1 #include<iostream>2 #include<cmath>3 using namespace std;4 //可以快速求出欧拉函数的值 ( P为N的质因子 )5 //若(N%P0 && (N/P)%P0…

CF 1093 E. Intersection of Permutations
E. Intersection of Permutations 链接 题意: 给定两个序列,询问第一个排列的[l1,r1]和第二个排列[l2,r2]中有多少个共同的数,支持在第二个排列中交换两个数。 分析: 首先求出一个数组,c[i],第二个排列的这…

s-seq 生成序列化数字
前言 seq命令用于产生从某个数到另外一个数之间的所有整数。 命令格式 seq [OPTION]... LAST seq [OPTION]... FIRST LAST seq [OPTION]... FIRST INCREMENT LAST 支持将指定范围的数字打印出来,按照指定的递增规律 -f, --format格式 使用printf 样式的浮点格式…

linux c++ 目录操作,C++文件及文件夹操作整理(代码示例)
一 文件1.1 使用C标准库中的IO库(fstream)读写文件#include #include using namespace std;int main(){char szData[200] "123456 test";fstream fFile;fFile.open("test.txt", ios::app | ios::out | ios::in);/****************将数据写入文件-begin***…

cocos2d-x 音效中断问题
做跑酷重吃金币播音效时,播放其它音效会使得音效所有中断,最后发现时音效上限的问题,2.2.3默认的似乎是5个音效,改动成50后问题解决。 在java中的org.cocos2dx.lib包下有一个Cocos2dxSound.java文件,改动里面 private …

AStyle - SourceInsight
SourceInsight : Options : Custom Commands Add 在弹出对话框写入 C/C Formatter "C:\AStyle\AStyle.exe" --styleansi -s2 --convert-tabs %f SourceInsight : Options : Key Assignments

c# blockingcollections
1 class Program2 {3 static BlockingCollection<int> cols new BlockingCollection<int>(2); //设置阻塞队列最大的容量;4 public static void Main(string[] args)5 {6 7 8 var t1…

递归/回溯:subsets求子集
前言 回溯法又称为试探法,但当探索到某一步时,发现原先选择达不到 目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法。 已知一组数(其中无重复元素),求这组数可以组成的所有子集。 结果中不可有无重复的子…

C++ stl vector介绍
转自: STL vector用法介绍 介绍 这篇文章的目的是为了介绍std::vector,如何恰当地使用它们的成员函数等操作。本文中还讨论了条件函数和函数指针在迭代算法中使用,如在remove_if()和for_each()中的使用。通过阅读这篇文章读者应该能够有效地使…

Linux服务器部署ssl证书教程,linux服务器在wdcp面板安装ssl证书教程
不少站长如今越来越在意站内数据传输的安全性,想着把自己建设的网站加密传输,许多站长都需要安装ssl证书,且很多站长都在找寻centos系统服务器linux服务器或者是wdcp面板怎么安装ssl证书,网上找了下没有完整步骤教程,所…

设备节点注册和操作方法连接
今天把驱动程序乱七八糟的看了一通,简单总结一下。 一个完整的驱动,需要提供如下的东西, 第一,用户空间/dev下面的设备节点。当然,如果该设备仅仅是内核的使用,例如I2C,则不需要在/dev下面建立…

maven(一 基本操作 命令 标签)
原来一直没有使用maven 小公司,只是听说过这个东西,我没事就喜欢 去学习一些新东西。maven学了几次,但是 没有用上 所以 最后还是忘记了,或者说不知道怎么使用maven,一年半以前公司 改革 ,招了一个技术大牛…

递归/回溯:Subsets II求子集(有重复元素)
上一篇描述了针对数组中没有重复元素进行子集的求取过程递归/回溯:subsets求子集 但是当出现如下数组时: 例如: nums[] [2, 1, 2, 2] 结果为: [[], [1], [1,2], [1,2,2], [1,2,2,2], [2], [2,2], [2,2,2]] 注意: [2,1,2]与[1,2,2]是重复的集合,则不满足…

[WP]使用ApacheCordova开发HTML5-WindowsPhone应用程序
下载代码示例 这篇文章介绍 Apache 科尔多瓦,创建使用 HTML5 和 JavaScript,跨平台移动应用程序的框架,并显示了如何使用它为 Windows Phone 开发应用程序。 Windows Phone 和其本机开发平台允许您轻松地创建美丽地铁样式的应用程序。 最近诺…

linux 不能运行程序代码,linux-无法在Ubuntu上运行我自己的OpenGL 3程序
我正在尝试OpenGL 2.x和3.x教程.程序进行编译和链接,然后在看似无害的行上进行段错误处理,例如glGenBuffers (1, &m_buffer);我的main()以glewInit和glutInit开头. OpenGL 1程序可以编译并正常运行,这似乎是由glew包装的新功能.一个教程说,在尝试任何其他操作之前,我应该先…

Cocos2d-x Eclipse下程序运行产生错误Effect initCheck() returned -1
错误大致显示如下信息:04-14 07:39:18.325: E/AudioEffect(20584): set(): AudioFlinger could not create effect, status: -104-14 07:39:18.325: E/libOpenSLES(20584): Effect initCheck() returned -104-14 07:39:18.325: E/libOpenSLES(20584): Environmental…

H2:开源内存数据库引擎
本资源由 伯乐在线 - 刘立华 整理H2是一个开源的内存数据库。Java编写、快速、小巧(1.5MB jar包)还提供了Web控制台管理数据库内容。 主要功能 非常快速的数据库引擎。开源。Java编写。支持标准SQL、JDBC API。支持嵌入式模式、服务器模式和集群。强大的…

递归/回溯:Combination Sum II数组之和
问题如下: 已知一组数(其中有重复元素),求这组数可以组成的所有子集中,子 集中的各个元素和为整数target的子集,结果中无重复的子集。 例如: nums[] [10, 1, 2, 7, 6, 1, 5], target 8 结果为: [[1, 7], [1, 2, 5], …