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-基础知识3

打包和压缩 zip 安装zip软件包 yum -y install zip unzip 压缩打包命令: zip -q -r -d -u 压缩包文件名 目录和文件名列表 -q:不显示命令执行过程-r:递归处理,打包各级子目录和文件-u:把文件增加/替换到压缩包中-d:从压缩包中删除指定的文件 解压:unzip 压缩包名 打包文件 把压缩包从服务器下载到本地 把压缩包上传到服务器(zip

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

30常用 Maven 命令

Maven 是一个强大的项目管理和构建工具,它广泛用于 Java 项目的依赖管理、构建流程和插件集成。Maven 的命令行工具提供了大量的命令来帮助开发人员管理项目的生命周期、依赖和插件。以下是 常用 Maven 命令的使用场景及其详细解释。 1. mvn clean 使用场景:清理项目的生成目录,通常用于删除项目中自动生成的文件(如 target/ 目录)。共性规律:清理操作

Linux_kernel驱动开发11

一、改回nfs方式挂载根文件系统         在产品将要上线之前,需要制作不同类型格式的根文件系统         在产品研发阶段,我们还是需要使用nfs的方式挂载根文件系统         优点:可以直接在上位机中修改文件系统内容,延长EMMC的寿命         【1】重启上位机nfs服务         sudo service nfs-kernel-server resta

【Linux 从基础到进阶】Ansible自动化运维工具使用

Ansible自动化运维工具使用 Ansible 是一款开源的自动化运维工具,采用无代理架构(agentless),基于 SSH 连接进行管理,具有简单易用、灵活强大、可扩展性高等特点。它广泛用于服务器管理、应用部署、配置管理等任务。本文将介绍 Ansible 的安装、基本使用方法及一些实际运维场景中的应用,旨在帮助运维人员快速上手并熟练运用 Ansible。 1. Ansible的核心概念

Linux服务器Java启动脚本

Linux服务器Java启动脚本 1、初版2、优化版本3、常用脚本仓库 本文章介绍了如何在Linux服务器上执行Java并启动jar包, 通常我们会使用nohup直接启动,但是还是需要手动停止然后再次启动, 那如何更优雅的在服务器上启动jar包呢,让我们一起探讨一下吧。 1、初版 第一个版本是常用的做法,直接使用nohup后台启动jar包, 并将日志输出到当前文件夹n

[Linux]:进程(下)

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:Linux学习 贝蒂的主页:Betty’s blog 1. 进程终止 1.1 进程退出的场景 进程退出只有以下三种情况: 代码运行完毕,结果正确。代码运行完毕,结果不正确。代码异常终止(进程崩溃)。 1.2 进程退出码 在编程中,我们通常认为main函数是代码的入口,但实际上它只是用户级