linux文件查找_which_find_locate

7.1 文件查找

7.1.1 简介

which:命令查找
​
find:文件查找,针对文件名
​
locate:文件查找,依赖数据库

7.1.2 which

which命令用于查找文件。
​
which指令会在环境变量$PATH设置的目录里查找符合条件的文件。

which命令的基本语法如下:

which [文件...]

参数说明

  • -n<文件名长度>  指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名。

  • -p<文件名长度>  与-n参数相同,但此处的<文件名长度>包括了文件的路径。

  • -w  指定输出时栏位的宽度。

  • -V  显示版本信息。

例:

使用指令"which"查看指令"bash"的绝对路径,输入如下命令:

which bash/ls/mkdir/pwd/cd/touch/cp/mv/useradd

上面的指令执行后,输出信息如下所示:

/bin/bash                   #bash可执行程序的绝对路径 

7.1.3 find

find 命令用于在指定目录下查找文件和目录。
​
它可以使用不同的选项来过滤和限制查找的结果。

find命令的基本语法如下:

find [path] [expression] [option] [action]路径     表达式                动作

参数说明

path 是要查找的目录路径,可以是一个目录或文件名,也可以是多个路径,多个路径之间用空格分隔,如果未指定路径,则默认为当前目录。

expression 是可选参数,用于指定查找的条件,可以是文件名、文件类型、文件大小等等。

expression 中可使用的选项有二三十个之多,以下列出最常用的部份:

  • -name pattern:按文件名查找,支持使用通配符 *?

  • -type type:按文件类型查找,可以是 f(普通文件)、d(目录)、l(符号链接)等。

  • -size [+-]size[cwbkMG]:按文件大小查找,支持使用 +- 表示大于或小于指定大小,单位可以是 c(字节)、w(字数)、b(块数)、k(KB)、M(MB)或 G(GB)。

  • -mtime days:按修改时间查找,支持使用 +- 表示在指定天数前或后,days 是一个整数表示天数。

  • -user username:按文件所有者查找。

  • -group groupname:按文件所属组查找。

find 命令中用于时间的参数如下:

  • -amin n:查找在 n 分钟内被访问过的文件。

  • -atime n:查找在 n*24 小时内被访问过的文件。

  • -cmin n:查找在 n 分钟内状态发生变化的文件(例如权限)。

  • -ctime n:查找在 n*24 小时内状态发生变化的文件(例如权限)。

  • -mmin n:查找在 n 分钟内被修改过的文件。

  • -mtime n:查找在 n*24 小时内被修改过的文件。

在这些参数中,n 可以是一个正数、负数或零。正数表示在指定的时间内修改或访问过的文件,负数表示在指定的时间之前修改或访问过的文件,零表示在当前时间点上修改或访问过的文件。

例如:-mtime 0 表示查找今天修改过的文件,-mtime -7 表示查找一周以前修改过的文件。

关于时间 n 参数的说明:

  • +n:查找比 n 天前更早的文件或目录。

  • -n:查找在 n 天内更改过属性的文件或目录。

  • n:查找在 n 天前(指定那一天)更改过属性的文件或目录。

例:

  1. 按文件名查找

查找/etc下面的hosts文件

find /etc -name hosts
​
find /etc -name HOSTS
find /etc -iname hosts   # -i表示忽略文件大小写
​
find /etc -iname hos*    # 模糊查找
  1. 按文件大小查找

查找/etc下大于,小于,等于5M的文件

find /etc/  -size  +5M    # 大于5M
ls -l /etc/udev/hwdb.bin -h
​
dd if=/dev/zero of=/tmp/5M.txt bs=1M count=5
find / -size 5M  # 等于5M
ls -lh /tmp/5M.txt
​
find /etc/  -size  -5M    # 小于5M
  1. 指定查找的目录深度

ls /etc/sysconfig/network-scripts/ifcfg-ens33
find / -maxdepth 3 -a -name "ifcfg-en*"
find / -maxdepth 4 -a -name "ifcfg-en*"
  1. 按文件属主、属组查找

查找属于li用户的文件

id li
find /home -user li    # 属主
find /home -group li   # 属组
​
ls -lh /home/li/.bashrc
  1. 按文件类型查找

ls -l -d ./1.txt  /tmp  /dev/sda  /dev/cdrom   # 查看文件类型
find /tmp -type f    # 查找普通文件类型
find /dev -type b   # 查找块文件类型
find /etc -type l
  1. 按文件权限查找

touch 714.txt
chmod 714 714.txt
find . -perm 714    # 当前目录下查找
find . -perm 714 -ls    # -ls为action
  1. 找到文件后处理动作

find . -perm 714 -print  # 默认自带动作
find /etc/ -name ifcfg* -ok cp -rvf {} /data1 \;   # 找到之后复制-ok连接,{}引用;\;结束

查找当前目录下名为 file.txt 的文件:

find . -name file.txt

将当前目录及其子目录下所有文件后缀为 .c 的文件列出来:

find . -name "*.c"

将当前目录及其子目录中的所有文件列出:

find . -type f

查找 /home 目录下大于 1MB 的文件:

find /home -size +1M

查找 /var/log 目录下在 7 天前修改过的文件:

find /var/log -mtime +7

将当前目录及其子目录下所有最近 20 天前更新过的文件列出,不多不少正好 20 天前的:

find . -ctime  20

将当前目录及其子目录下所有 20 天前及更早更新过的文件列出:

find . -ctime  +20

将当前目录及其子目录下所有最近 20 天内更新过的文件列出:

find . -ctime  20

查找 /var/log 目录中更改时间在 7 日以前的普通文件,并在删除之前询问它们:

find /var/log -type f -mtime +7 -ok rm {} \;

查找当前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件:

find . -type f -perm 644 -exec ls -l {} \;

查找系统中所有文件长度为 0 的普通文件,并列出它们的完整路径:

find / -type f -size 0 -exec ls -l {} \;

7.1.3 locate

locate命令用于查找符合条件的文档,他会去保存文档和目录名称的数据库内,查找合乎范本样式条件的文档或目录。
​
一般情况我们只需要输入 **locate your_file_name** 即可查找指定文件。

locate命令的基本语法如下:

locate [-d ][--help][--version][范本样式...]

参数说明

  • -b, --basename -- 仅匹配路径名的基本名称

  • -c, --count -- 只输出找到的数量

  • -d, --database DBPATH -- 使用 DBPATH 指定的数据库,而不是默认数据库 /var/lib/mlocate/mlocate.db

  • -e, --existing -- 仅打印当前现有文件的条目

  • -1 -- 如果 是 1.则启动安全模式。在安全模式下,使用者不会看到权限无法看到 的档案。这会始速度减慢,因为 locate 必须至实际的档案系统中取得档案的 权限资料。

  • -0, --null -- 在输出上带有NULL的单独条目

  • -S, --statistics -- 不搜索条目,打印有关每个数据库的统计信息

  • -q-- 安静模式,不会显示任何错误讯息。

  • -P, --nofollow, -H -- 检查文件存在时不要遵循尾随的符号链接

  • -l, --limit, -n LIMIT -- 将输出(或计数)限制为LIMIT个条目

  • -n -- 至多显示 n个输出。

  • -m, --mmap -- 被忽略,为了向后兼容

  • -r, --regexp REGEXP -- 使用基本正则表达式

  • --regex --使用扩展正则表达式

  • -q, --quiet -- 安静模式,不会显示任何错误讯息

  • -s, --stdio -- 被忽略,为了向后兼容

  • -o -- 指定资料库存的名称。

例:

查找 passwd 文件,输入以下命令:

locate passwd

搜索 etc 目录下所有以 sh 开头的文件 :

locate /etc/sh

忽略大小写搜索当前用户目录下所有以 r 开头的文件 :

locate -i ~/r

附加说明

locate 与 find 不同: find 是去硬盘找,locate 只在 /var/lib/slocate 资料库中找。

locate 的速度比 find 快,它并不是真的查找,而是查数据库,一般文件数据库在 /var/lib/slocate/slocate.db 中,所以 locate 的查找并不是实时的,而是以数据库的更新为准,一般是系统自己维护,也可以手工升级数据库 ,命令为:

updatedb

默认情况下 updatedb 每天执行一次。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/257174.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux_CentOS_7.9配置oracle sqlplus、rman实现上下按键切换历史命令等便捷效率功能之简易记录

配置oracle sqlplus以及rman可以上下按键切换历史命令等便捷效率功能 设置前提是已经yum安装了rlwrap软件具体软件下载及配置参考文章http://t.csdnimg.cn/iXuVK su - oracleVim .bash_profile ## 文件中增加如下的别名设置 ---------------- alias sqlplusrlwrap sqlplus…

[linux] 用命令行wget下载google drive的大文件

使用wget命令下载Google drive上的文件_ubuntu上wget下载谷歌云盘文件-CSDN博客 如何用命令行下载Google Drive上的共享文件&#xff1f;-腾讯云开发者社区-腾讯云 举例&#xff1a;https://drive.google.com/drive/folders/1vKj3VvJEKgS_o-uOSmz3I0-GomECpql3 1、在网页上&…

翡翠手镯镯子断了怎么修复?

修复翡翠镯子需要谨慎对待&#xff0c;因为翡翠是一种比较脆弱的宝石&#xff0c;不适合使用一般的胶水或者粘合剂。必须选择针对翡翠手镯玉器玉石珠宝宝石石材专用的胶粘剂&#xff1a; 1.收集断裂的部分&#xff1a; 尽量收集到所有断裂的部分&#xff0c;包括碎片。这有助于…

探索Spring事件监听机制的奇妙世界

文章目录 什么是Spring事件监听机制主要组件内置的事件监听类自定义事件监听类总结 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 什么是Spring事件监听机制 Spring事件监听机制是Spr…

ssh安装和Gitee(码云)源码拉取

文章目录 安装ssh服务注册码云公钥设置码云账户SSH公钥安装git客户端和git-lfs源码获取 安装ssh服务 更新软件源&#xff1a; sudo apt-get update安装ssh服务 sudo apt-get install openssh-server检查ssh是否安装成功 which ssh输出&#xff1a; /usr/bin/ssh启动ssh 服…

java之“输入与输出”程序详解

java之“输入与输出”程序详解 一、eclipse操作示例1、完整代码2、运行效果3、代码与运行结果关系图 一、eclipse操作示例 1、完整代码 import java.util.Scanner;public class inputOutput {/*** param args 输入与输出*/public static void main(String[] args) {// 输出Sy…

HL7/FHIR 是什么

如果你对上面 2 个单词不熟悉的话&#xff0c;那就需要先脑补下了。 HL7 HL7 可以认为是一个标准化的组织&#xff0c;这个组织主要对标准进行控制。 如果你希望在医疗系统中对数据进行交换&#xff0c;通常 HL7 现在就是事实上的标准了。 FHIR FHIR – Fast Health Inter…

51单片机的时钟电路与时序以及 复位电路和电源模式

51单片机的时钟电路与时序以及 复位电路和电源模式 本文主要涉及51单片机的时钟电路以及相关时序的知识&#xff0c;也讲解了了51单片机的复位电路以及电源模式。 文章目录 51单片机的时钟电路与时序以及 复位电路和电源模式一、时钟电路与时序1、 时钟电路设计1.1 内部时钟方式…

2023-12-07 LeetCode每日一题(重新规划路线)

2023-12-07每日一题 一、题目编号 1466. 重新规划路线二、题目链接 点击跳转到题目位置 三、题目描述 n 座城市&#xff0c;从 0 到 n-1 编号&#xff0c;其间共有 n-1 条路线。因此&#xff0c;要想在两座不同城市之间旅行只有唯一一条路线可供选择&#xff08;路线网形成…

华为12月开奖,你毁约吗?打工人必看!

哈喽&#xff0c;华孝子们&#xff01; &#x1f44b; 今天要跟大家聊一聊华为12月份开奖的话题。 2023年华为开奖&#x1f381;&#xff1a; 对比了一下去年的华为开出的薪资&#xff0c;似乎今年与去年是持平的&#xff0c;去年的华为薪资就是很低的。千寻虽然是北大的&…

K8S 删除命令空间时 一直卡住怎么办?

当使用完一个命名空间后&#xff0c;想删除了又删除不掉&#xff0c;这个时候查看命名空间的状态一直是Terminating。使用强制删除&#xff0c;也是还是不行。&#xff08;找了好多办法都不行&#xff09; [rootk8s-master kubernetes-yaml]# kubectl delete ns mem-example Er…

Kafka性能调优:高吞吐、低延迟的数据流

Apache Kafka作为一种高性能、分布式流处理平台&#xff0c;对于实时数据的处理至关重要。本文将深入讨论Kafka性能调优的关键策略和技术&#xff0c;通过丰富的示例代码为大家提供实际操作指南&#xff0c;以构建高吞吐、低延迟的数据流系统。 Broker 配置的优化 首先&#…