当前位置: 首页 > 编程日记 > 正文

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.创建如下存储过程&#xff0c;注意将其中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》 正在看&#xff0c;这本书是在博客园上看到某个去google的大牛推荐的&#xff0c;的确&#xff0c;虽然数据结构&#xff0c;我已经很熟悉了&#xff0c;但是看这本书的时候&#xff0c;有一些细节我是…

Tutorial——使用Maven开发Cloud Driver

2019独角兽企业重金招聘Python工程师标准>>> Before You Start 开发之前&#xff0c;应有以下准备 Apache MavenCloudify调用云API的安全凭证&#xff0c;使用SSH访问你的机器&#xff0c;如果需要访问您的云的存储。 例如&#xff0c;通过以下步骤获得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 最少次数完成射击气球

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

linux服务器加固的命令,Linux 服务器安全加固

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

devexpress toolbar 填充整行宽度

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

【java】staitc

一、static变量 二、static方法 三、static代码块 四、static类&#xff1a;只能是内部类

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 注意&#xff1a;若出现以下错误&#xff0c;可使用yum解决依赖——Delta RPMs disabled because /…

贪心:expedition 最优加油方法

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

UML for Java Programmers之dx实战

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

linux进程池动态维护,可直接商用的跨平台c,c++动态线程池,任务池stpool库

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

hdu 1286( 欧拉函数 )

题目链接&#xff1a;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 链接 题意&#xff1a; 给定两个序列&#xff0c;询问第一个排列的[l1,r1]和第二个排列[l2,r2]中有多少个共同的数&#xff0c;支持在第二个排列中交换两个数。 分析&#xff1a; 首先求出一个数组&#xff0c;c[i]&#xff0c;第二个排列的这…

s-seq 生成序列化数字

前言 seq命令用于产生从某个数到另外一个数之间的所有整数。 命令格式 seq [OPTION]... LAST seq [OPTION]... FIRST LAST seq [OPTION]... FIRST INCREMENT LAST 支持将指定范围的数字打印出来&#xff0c;按照指定的递增规律 -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 音效中断问题

做跑酷重吃金币播音效时&#xff0c;播放其它音效会使得音效所有中断&#xff0c;最后发现时音效上限的问题&#xff0c;2.2.3默认的似乎是5个音效&#xff0c;改动成50后问题解决。 在java中的org.cocos2dx.lib包下有一个Cocos2dxSound.java文件&#xff0c;改动里面 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); //设置阻塞队列最大的容量&#xff1b;4 public static void Main(string[] args)5 {6 7 8 var t1…

递归/回溯:subsets求子集

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

C++ stl vector介绍

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

Linux服务器部署ssl证书教程,linux服务器在wdcp面板安装ssl证书教程

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

设备节点注册和操作方法连接

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

maven(一 基本操作 命令 标签)

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

递归/回溯:Subsets II求子集(有重复元素)

上一篇描述了针对数组中没有重复元素进行子集的求取过程递归/回溯&#xff1a;subsets求子集 但是当出现如下数组时&#xff1a; 例如: 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 科尔多瓦&#xff0c;创建使用 HTML5 和 JavaScript&#xff0c;跨平台移动应用程序的框架&#xff0c;并显示了如何使用它为 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

错误大致显示如下信息&#xff1a;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编写、快速、小巧&#xff08;1.5MB jar包&#xff09;还提供了Web控制台管理数据库内容。 主要功能 非常快速的数据库引擎。开源。Java编写。支持标准SQL、JDBC API。支持嵌入式模式、服务器模式和集群。强大的…

递归/回溯:Combination Sum II数组之和

问题如下&#xff1a; 已知一组数(其中有重复元素)&#xff0c;求这组数可以组成的所有子集中&#xff0c;子 集中的各个元素和为整数target的子集&#xff0c;结果中无重复的子集。 例如: nums[] [10, 1, 2, 7, 6, 1, 5]&#xff0c; target 8 结果为: [[1, 7], [1, 2, 5], …