Linux命令之查找文件、文件查找-find,grep

2024-06-08 17:58

本文主要是介绍Linux命令之查找文件、文件查找-find,grep,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

转载自:http://billie66.github.io/TLCL/book/zh/chap18.html


find 查找文件

【语法】 find path_name [path_name_tow ...] [options] expression

【命令说明】 find 递归遍历指定路径;

【参数说明】

-print 将符合条件的数据打印到标准输出(控制台);find命令默认不打印,不使用该参数,没有输出信息;

-name v_name 按指定文件名查找(\ 为转意符),支持通配符;

   $ find . -name ”*.log” -print;

-iname v_name 按指定文件名(忽略字母大小写)查找(\ 为转意符),支持通配符;

-path v_path_name 按指定文件路径查找(\ 为转意符),支持通配符;

   $ find . -path ”*/test/*.log” -print;

-regex 基于正则表达式来匹配文件路径;

-iregex 基于正则表达式(忽略大小写)来匹配文件路径;

-maxdepth n 指定搜索的最大深度;当前目录为1;

    $ find . -name ”*.conf” -maxdepth 2 -print;

-mindepth m 指定搜索的最小深度;当前目录为1;

-atime +n|-n 根据访问时间(access time)查找;单位是天,’-n’表示小于n,’+n’表示大于n;

    $ find . -type f -atime -7 -print; #查找7天内访问过的文件

-mtime +n|-n 根据修改时间(modify time)查找;单位是天,’-n’表示小于n,’+n’表示大于n;

-ctime +n|-n 根据变化时间(change time)查找;单位是天,’-n’表示小于n,’+n’表示大于n;

-amin +n|-n 根据访问时间(access minute)查找;单位是分钟,’-n’表示小于n,’+n’表示大于n;

    $ find . -type f -amin -7 -print; #查找7分钟内访问过的文件

-mtime +n|-n 根据修改时间(modify minute)查找;单位是分钟,’-n’表示小于n,’+n’表示大于n;

-ctime +n|-n 根据变化时间(change minute)查找;单位是分钟,’-n’表示小于n,’+n’表示大于n;

-newer 指定用于比较时间戳的参考文件,查找比该文件新更新的所有文件;

-size -n|+n 根据文件大小查找;可选单位有:c(字节),k(KB),m(MB),g(GB);

    $ find . -type f -size +2k; #查找大于2KB的文件;

-type <x> 根据文件类型查找; b(block,块文件),c(char,字符文件),d(dir,目录),l(link,符号链接),p(pipe,命名管道),f(file,文件);

-perm n 基于文件权限查找; n为8进制的三个数字;

    $ find . -type f -perm 644 -print;

-delete 删除已经查选到的文件;

    $ find . -type f -name ”*.log” -delete ; #删除当前目录下的所有的.log文件;

-prune 跳过指定的目录;

    $ find . \( -name ”.git” -prune \) -o \( -type f -print \) ;#排除.git文件

 

! 查找不匹配

    $ find /home/cookie ! -name ”*.log” -print

-o 或者,匹配多个条件;

    $ find /home/cookie \( -name ”*.text” -o -name ”*.pdf” \) -print

- 并且

 

【注意】

-maxdepth 和 -mindepth 应该作为find的第三个参数出现,以实现最大搜索效率;


grep 从文件/标准输入流查找指定内容

【语法】 grep [options] pattern file_names

【语法】 command | grep [options] pattern

【说明】 默认的pattern可包含通配符;若指定文件为缺省,则使用标准输入;若使用正则表达式,则使用 -E 选项,或使用egrep命令;

【正则表达式符号说明】

. 匹配任意一个字符;

* 匹配0个或多个*前的字符;

^ 匹配行开头;

$ 匹配行结尾;

[] 匹配[]中的任意一个字符,[]中可用 - 表示范围;例如[a-z]表示字母a 至z 中的任意一个

\ 转意字符;

【选项说明】

-R,-r,--recursive 递归查找子目录下的文件;

    $ grep ”text” . -R -n;

-i 字母不区分大小写;

-n 显示行号;

-v 显示所有不匹配的行;

-l 仅显示文件名;

-b 显示块号;

-c 仅显示各指定文件中匹配的总行数;(统计的是匹配的行数,而不是匹配的数量);

-h 不显示文件名;

-s 指定文件若不存在或不可读,不提示错误信息;

--color 重点标记匹配的单词;

    $ grep server_port app.conf --color=auto

-E 使用正则表达式模式;

    $ grep -E ”[a-z]+” ;#等价于 egrep ”[a-z]+”;

-e 指定多个匹配样式;

    $ grep -e ”.pdf” -e ”.doc”;

--exclude 搜索时排除指定文件;

    $ grep ”main()” . -r --exclude ”README”;

--exclude-dir 搜索时排除指定目录;

--exclude-from 搜索时排除指定文件列表(从文件读取);

    $ grep ”main()” . -r --exclude-from ”file_list”;

--include 指定搜索的范围;

    $ grep ”main()” . -r --include *.{c,cpp};

-A n 输出结果的同时,输出匹配结果之后的n行;

    $ seq 10 | grep 5 -A 2;

-B n 输出结果的同时,输出匹配结果之前的n行;

    $ seq 10 | grep 5 -B 2;

-C n 输出结果的同时,输出匹配结果之前的n行和之后的n行;

    $ seq 10 | grep 5 -C 2;

 

 

这篇关于Linux命令之查找文件、文件查找-find,grep的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1042901

相关文章

linux生产者,消费者问题

pthread_cond_wait() :用于阻塞当前线程,等待别的线程使用pthread_cond_signal()或pthread_cond_broadcast来唤醒它。 pthread_cond_wait() 必须与pthread_mutex 配套使用。pthread_cond_wait()函数一进入wait状态就会自动release mutex。当其他线程通过pthread

Linux 安装、配置Tomcat 的HTTPS

Linux 安装 、配置Tomcat的HTTPS 安装Tomcat 这里选择的是 tomcat 10.X ,需要Java 11及更高版本 Binary Distributions ->Core->选择 tar.gz包 下载、上传到内网服务器 /opt 目录tar -xzf 解压将解压的根目录改名为 tomat-10 并移动到 /opt 下, 形成个人习惯的路径 /opt/tomcat-10

RedHat运维-Linux文本操作基础-AWK进阶

你不用整理,跟着敲一遍,有个印象,然后把它保存到本地,以后要用再去看,如果有了新东西,你自个再添加。这是我参考牛客上的shell编程专项题,只不过换成了问答的方式而已。不用背,就算是我自己亲自敲,我现在好多也记不住。 1. 输出nowcoder.txt文件第5行的内容 2. 输出nowcoder.txt文件第6行的内容 3. 输出nowcoder.txt文件第7行的内容 4. 输出nowcode

【Linux进阶】UNIX体系结构分解——操作系统,内核,shell

1.什么是操作系统? 从严格意义上说,可将操作系统定义为一种软件,它控制计算机硬件资源,提供程序运行环境。我们通常将这种软件称为内核(kerel),因为它相对较小,而且位于环境的核心。  从广义上说,操作系统包括了内核和一些其他软件,这些软件使得计算机能够发挥作用,并使计算机具有自己的特生。这里所说的其他软件包括系统实用程序(system utility)、应用程序、shell以及公用函数库等

【Altium】查找PCB上未连接的网络

【更多软件使用问题请点击亿道电子官方网站】 1、文档目标: PCB设计后期检查中找出没有连接的网络 应用场景:PCB设计后期,需要检查是否所有网络都已连接布线。虽然未连接的网络会有飞线显示,但是由于布线后期整板布线密度较高,虚连,断连的网络用肉眼难以轻易发现。用DRC检查也可以找出未连接的网络,如果PCB中DRC问题较多,查找起来就不是很方便。使用PCB Filter面板来达成目的相比DRC

Windows/macOS/Linux 安装 Redis 和 Redis Desktop Manager 可视化工具

本文所有安装都在macOS High Sierra 10.13.4进行,Windows安装相对容易些,Linux安装与macOS类似,文中会做区分讲解 1. Redis安装 1.下载Redis https://redis.io/download 把下载的源码更名为redis-4.0.9-source,我喜欢跟maven、Tomcat放在一起,就放到/Users/zhan/Documents

Linux系统稳定性的奥秘:探究其背后的机制与哲学

在计算机操作系统的世界里,Linux以其卓越的稳定性和可靠性著称,成为服务器、嵌入式系统乃至个人电脑用户的首选。那么,是什么造就了Linux如此之高的稳定性呢?本文将深入解析Linux系统稳定性的几个关键因素,揭示其背后的技术哲学与实践。 1. 开源协作的力量Linux是一个开源项目,意味着任何人都可以查看、修改和贡献其源代码。这种开放性吸引了全球成千上万的开发者参与到内核的维护与优化中,形成了

Linux 下的Vim命令宝贝

vim 命令详解(转自:https://www.cnblogs.com/usergaojie/p/4583796.html) vi: Visual Interface 可视化接口 vim: VI iMproved VI增强版 全屏编辑器,模式化编辑器 vim模式: 编辑模式(命令模式)输入模式末行模式 模式转换: 编辑-->输入: i: 在当前光标所在字符的前面,转为输入模式

Linux和Mac分卷压缩

使用 zip 命令压缩文件 使用 zip 命令压缩文件,并结合 split 命令来分卷: zip - largefile | split -b 500k 举例: zip - ./tomcat.dmg |split -b 500k 上述命令将文件 largefile 压缩成 zip 包并分卷成不超过 500k 的文件,分解后文件名默认是 x* ,后缀为 2 位a-z 字母,如 aa、ab。

Linux文本三剑客sed

sed和awk grep就是查找文本当中的内容,最强大的功能就是使用扩展正则表达式 sed sed是一种流编辑器,一次处理一行内容。 如果只是展示,会放在缓冲区(模式空间),展示结束后,会从模式空间把结果删除 一行行处理,处理完当前行,才会处理下一行。直到文件的末尾。 sed的命令格式和操作选项: sed -e '操作符 ' -e '操作符' 文件1 文件2 -e表示可以跟多个操作