Linux中常用查找命令之find、grep以及二者混合使用

find 命令

查找文件或目录(支持通配符如 * 和 ?)

find /path/to/search -name "*.txt".   // 查找对应路径下所有的txt文件

-type f 表示只查找文件(不包括目录)

find /path/to/directory -type f -name "hello*"   // 查找对应目录下所有hello开头的文件

-type d 只查找目录(不包括文件)

find /path/to/directory -type d -name "hello*"  // 查找对应目录下所有hello开头的文件夹

查找特定大小的文件

find /path/to/directory -size +100M    // 查找对应目录下所有大于100Mb的文件,可以使用 + 表示大于,- 表示小于,M 表示兆字节,k 表示千字节,G 表示吉字节。

查找特定条件的文件

find /etc -perm 644                                //特定权限
find /path/to/search -user username        //特定用户
find /path/to/search -group groupname    //特定组

查找并执行操作

// 对找到的每个文件执行指定的命令,{} 是找到的文件的占位符,\; 表示命令结束。
find /path/to/search -name "*.log" -exec rm {} \;      // 对找到的每个文件执行rm
find /tmp -type f -mtime +7 -exec rm {} \;                // 查找 /tmp 目录下修改时间超过 7 天的文件并删除它们。

查找最新修改的文件

find /path/to/search -mtime -1              // 查找在过去 24 小时内修改过的文件。

查找并忽略大小写

find /path/to/search -iname "filename"

grep 命令

在文件中搜索特定字符串

grep -i -n "search_pattern" filename    // -i 表示忽略大小写, -n 表示显示行号

在文件夹中递归查找对应字符串

grep -r -n "search_pattern" directory    // -i 表示忽略大小写, -n 表示显示行号, -r 递归查找所有文件

搜索整个单词

grep -w "cat" animals.txt       // 在 animals.txt 中查找独立的单词 "cat",避免匹配如 "category"。

显示匹配行前后的内容

grep -A num "pattern" filename      # 显示匹配行及其后 num 行
grep -B num "pattern" filename      # 显示匹配行及其前 num 行
grep -C num "pattern" filename      # 显示匹配行及其前后各 num 行

混合使用

查找当前目录及子目录下所有 .txt 文件中包含 "error" 的行​

find . -name "*.txt" | xargs grep "error"
posted @ 2025-04-15 14:17  Greg_LYU  阅读(84)  评论(0)    收藏  举报