Liunx查找过滤

目录

一.查找  

基本用法

常见条件

搭配逻辑逻辑运算符(综合)

1.根据文件名 

2.根据文件类型 

 3.根据文件大小

4.根据时间 

5.根据权限

基本权限格式

找到后处理的动作与处理

1. -exec

2.xargs

-exec和xargs的区别 

 扩展查找

1.which

应用场景

2.whereis 

选项

应用场景

3.type

与 which 和 whereis 的不同

总结

4.command -v

区别与 which

与 type 的不同

应用场景

二.过滤

常见选项

基本示例

显示行号和反向匹配

递归搜索和显示上下文

使用正则表达式

在管道中使用

其他用途


一.查找  

  find是Linux和Unix系统中用于在文件系统中搜索文件和目录的强大工具。它可以根据各种条件进行搜索,如文件名、文件类型、大小、权限、修改时间等。find支持丰富的选项和表达式,可以执行复杂的搜索和操作。下面是关于find的一些主要用法和示例:

基本用法

find [起始目录] [条件]

find命令从指定的起始目录开始递归搜索文件和目录,并根据提供的条件进行过滤。

常见条件

  • -name:根据文件名进行搜索。
  • -type:根据文件类型搜索,常见的类型有 f(文件)、d(目录)、l(符号链接)等。
  • -size:根据文件大小搜索,使用 c 表示字节,k 表示千字节,M 表示兆字节,G 表示吉字节。
  • -mtime:基于文件最后修改时间,以天为单位。
  • -ctime:基于文件的创建时间或属性更改时间。
  • -atime:基于文件的最后访问时间。
  • -mmin:根据文件修改时间搜索,单位是分钟。
  • -perm:根据文件权限搜索。

搭配逻辑逻辑运算符(综合)

  • -a 表示逻辑与运算,连接两个条件。条件之间的逻辑与意味着两个条件都要满足,结果才为真。
  •  -o 表示逻辑或运算,连接两个条件。在 find 中,逻辑或意味着只要有一个条件满足,结果就为真。
  • 表示逻辑非运算,用于反转条件。在 find 中,逻辑非用于查找不满足特定条件的文件或目录。
# 查找文件名为 "example.txt" 且大小大于 1MB
find . -name "example.txt" -a -size +1M

# 省略 -a,效果相同,在 find 中,默认逻辑运算符是 -a,所以可以省略。
find . -name "example.txt" -size +1M
在这些例子中,只有在两个条件都满足的情况下,文件才会被找到。


# 查找文件名以 ".txt" 结尾或大小大于 1MB
find . -name "*.txt" -o -size +1M

# 查找目录中文件名包含 "data" 或最近 7 天内修改过的文件
find . -name "*data*" -o -mtime -7
在这些例子中,只要满足其中一个条件,文件就会被找到。

# 查找不是 ".txt" 的文件
find . -not -name "*.txt"

# 使用感叹号,效果相同
find . ! -name "*.txt"

# 查找不是目录的所有文件
find . -not -type d
在这些例子中,只有在不满足指定条件的情况下,文件才会被找到。

组合使用
这些运算符可以组合使用,以创建更复杂的逻辑表达式。在 find 中使用逻辑运算符时,建议使用括号来明确逻辑优先级,特别是当使用多个条件组合时。

# 查找所有是目录或修改时间在 7 天以内的文件   # \表示将(转义的意思,让计算机识别为普通括号
find . \( -type d -o -mtime -7 \)

# 查找文件不是目录且大小大于 1MB       #-not 或 ! 表示逻辑非。
find . -not \( -type d -o -size -1M \)

1.根据文件名 

        使用-name选项可以搜索精确的文件名,使用-iname可以忽略大小写地搜索。此外,还可以使用通配符,如星号 *、问号 ? 和方括号 [ ] 等,以灵活匹配文件名。

使用-name进行精确匹配
# 查找名为 "example.txt" 的文件,       .和./同意义,表示当前目录
find . -name "example.txt"

# 在 /var/log 目录及其子目录中查找名为 "syslog" 的文件
find /var/log -name "syslog"

使用通配符*进行部分匹配
星号*可以匹配零个或多个字符,适用于文件名的部分匹配。

# 查找所有以 ".txt" 结尾的文件
find . -name "*.txt"

# 在 /usr/bin 目录中查找所有以 "python" 开头的文件
find /usr/bin -name "python*"

# 查找所有包含 "temp" 的文件
find . -name "*temp*"
使用-iname忽略大小写
如果不区分大小写进行匹配,可以使用-iname。

# 查找所有以 ".TXT" 结尾的文件,忽略大小写
find . -iname "*.txt"

# 查找所有包含 "LOG" 的文件,忽略大小写
find . -iname "*log*"
使用问号?匹配单个字符
问号?用于匹配单个字符。

# 查找所有名为 "file1.txt" 到 "file9.txt" 的文件
find . -name "file?.txt"

# 查找所有类似 "data1.txt" 到 "data9.txt" 的文件
find . -name "data?.txt"

使用方括号[ ]匹配字符集
方括号[ ]用于匹配一组字符中的一个。

# 查找所有文件名中包含 "1"、"2" 或 "3" 的文件
find . -name "*[123]*"

# 查找所有以 ".jpg" 或 ".png" 结尾的文件
find . -name "*.jp[gp]"

2.根据文件类型 

通过-type选项指定要搜索的文件类型。常见的文件类型包括:

  • f:普通文件(regular file)
  • d:目录(directory)
  • l:符号链接(symbolic link)
  • c:字符设备(character device)
  • b:块设备(block device)
  • p:命名管道(named pipe)
  • s:套接字(socket)
查找普通文件
# 查找当前目录及其子目录中的所有普通文件
find . -type f

# 在 /var/log 目录中查找所有普通文件
find /var/log -type f

查找目录
# 查找当前目录及其子目录中的所有目录
find . -type d

# 在 /home 目录中查找所有用户的目录
find /home -type d

查找符号链接
# 查找当前目录及其子目录中的所有符号链接
find . -type l

# 在 /usr/local/bin 目录中查找所有符号链接
find /usr/local/bin -type l

查找字符设备和块设备
字符设备和块设备通常用于与硬件交互。
# 在 /dev 目录中查找所有字符设备
find /dev -type c

# 在 /dev 目录中查找所有块设备
find /dev -type b

查找套接字和命名管道
套接字和命名管道用于进程间通信。
# 在 /tmp 目录中查找所有套接字
find /tmp -type s

# 在当前目录中查找所有命名管道
find . -type p

 3.根据文件大小

        过-size选项,您可以指定文件大小的条件,进行搜索和过滤。-size选项可以使用不同的单位来表示文件大小,如字节(c)、千字节(k)、兆字节(M)、吉字节(G)等。根据文件大小的范围,可以指定是寻找大于某个大小、小于某个大小,还是正好等于某个大小的文件。

基本用法
# 查找当前目录中所有大于1MB的文件
find . -size +1M

# 查找当前目录中所有小于10KB的文件
find . -size -10k

# 查找当前目录中所有正好等于100字节的文件
find . -size 100c

使用单位
可以使用不同的单位来指定文件大小,常见的单位包括:
c:字节
k:千字节
M:兆字节
G:吉字节

# 查找所有小于1MB的文件
find . -size -1M

# 查找所有大于10GB的文件
find / -size +10G

组合条件
可以将文件大小与其他条件结合起来,进行更复杂的搜索。
# 查找当前目录中所有以 ".log" 结尾并且大于500KB的文件
find . -name "*.log" -size +500k

# 查找 /var/log 中所有目录并且小于4KB的文件
find /var/log -type f -size -4k

# 查找当前目录中所有最近7天内修改且小于100KB的文件
find . -mtime -7 -size -100k

文件大小的特殊案例
在某些情况下,可能需要查找特殊大小的文件,例如空文件。
# 查找当前目录中所有空文件
find . -type f -size 0

# 查找当前目录中所有非空文件
find . -type f -size +0

4.根据时间 

find 命令可以根据文件的时间属性进行搜索。这包括文件的创建时间、修改时间和访问时间。

  • +N:超过 N 天/分钟。
  • -N:小于 N 天/分钟。
  • N:正好 N 天/分钟。

使用 -mtime 和 -mmin
-mtime 用于查找最近修改的文件,单位是天。-mmin 则是以分钟为单位。

# 查找过去 7 天内修改的文件
find . -mtime -7

# 查找超过 30 天没有修改的文件
find . -mtime +30

# 查找正好 10 天前修改的文件
find . -mtime 10

# 查找过去 60 分钟内修改的文件
find . -mmin -60

# 查找超过 120 分钟前修改的文件
find . -mmin +120

使用 -ctime
-ctime 参考文件的 inode 更改时间,这包括文件的创建时间和属性变化时间。这个选项对于查找最近创建的文件或属性更改过的文件很有用。

# 查找过去 1 天内创建或更改属性的文件
find . -ctime -1

# 查找超过 7 天前创建或更改属性的文件
find . -ctime +7

使用 -atime
-atime 表示文件最后访问时间,可以查找过去一段时间内被访问的文件。

# 查找过去 1 天内被访问的文件
find . -atime -1

# 查找超过 30 天未被访问的文件
find . -atime +30

使用 -newer
-newer 允许基于参考文件的修改时间来查找文件。这对比较文件修改时间非常有用。

# 查找比 reference.txt 更新的文件
find . -newer reference.txt

# 查找在指定时间后修改的文件
find . -newerct "2024-05-01 00:00:00"

使用 -time 组合其他条件
可以将时间条件与其他条件组合使用,以创建复杂的搜索规则。

# 查找过去 7 天内修改且以 ".log" 结尾的文件
find . -mtime -7 -name "*.log"

# 查找过去 24 小时内访问且大于 1MB 的文件
find . -atime -1 -size +1M

# 查找过去 30 分钟内修改且权限为 755 的文件
find . -mmin -30 -perm 755

5.根据权限

 通过 -perm 选项,可以搜索符合特定权限的文件。

基本权限格式

权限格式有两种主要方式:八进制和符号方式。

  • 八进制方式:使用数字来表示权限,每个数字代表所有者、所属组和其他用户的权限。例如,755 表示所有者有全部权限,而组和其他用户只有读取和执行权限。
  • 符号方式:使用符号来表示权限,如 rwx。例如,u=rwx,g=rx,o=rx 表示所有者有全部权限,而组和其他用户只有读取和执行权限。
精确匹配
如果要查找特定权限的文件,可以使用精确匹配的方式:

# 查找当前目录中所有权限为 755 的文件
find . -perm 755

# 查找权限为 644 的文件
find /etc -perm 644

使用 -perm -
如果权限需要包含指定的权限,可以使用 -perm -。这意味着文件或目录的权限至少包含指定的权限。

# 查找当前目录中所有包含执行权限的文件
find . -perm -111

# 查找所有者有写权限的文件
find . -perm -200

使用 -perm /
这个选项表示文件或目录的权限中包含任何指定的权限。

# 查找任何用户可执行的文件
find . -perm /111

# 查找任何组用户可写的文件
find . -perm /020

组合条件
可以将权限条件与其他条件组合,以查找符合多个条件的文件和目录。

# 查找权限为 755 且最近 7 天内修改的文件
find . -perm 755 -mtime -7

# 查找权限为 644 且以 ".conf" 结尾的文件
find /etc -perm 644 -name "*.conf"

# 查找当前目录中,权限包含任何执行权限且以 ".sh" 结尾的文件
find . -perm /111 -name "*.sh"

找到后处理的动作与处理

1. -exec

-execfind 命令的一个重要参数,用于在找到满足条件的文件后执行指定的操作。

语法为:

find [搜索路径] [搜索条件] -exec [命令] {} \;
其中,{} 是占位符,表示找到的文件名,而 \; 是命令的结束标记。

例如,如果想查找当前目录下的所有 .txt 文件,并删除它们,可以使用:

find . -name "*.txt" -exec rm {} \;

这个命令会在当前目录下查找所有扩展名为 .txt 的文件,并逐个删除它们。

在某些情况下,我们可能想要执行不同的命令或者多条命令。为此,您可以使用 -exec ... +

它与 -exec ... \; 的区别在于 -exec ... \; 会针对每个找到的文件单独执行命令,而 -exec ... + 则会将所有找到的文件作为参数一次性传递给命令。

例如,批量列出所有 .txt 文件的详细信息:

find . -name "*.txt" -exec ls -l {} +

这个命令会将所有找到的 .txt 文件传给 ls -l 命令,从而避免重复执行 ls 命令,提高效率。

2.xargs

 xargs 用于将输入转换为命令参数。它常与 find 命令结合使用,以将 find 的输出传递给其他命令。与 -exec 不同,xargs 可以更加灵活地处理输入,并且在处理大量文件时效率更高,因为它可以将多个参数组合在一起传递给目标命令,而不是一次处理一个文件。

参数示例:
-0 / --null
使用空字节 (null) 作为分隔符。这对于处理可能包含空格、换行符或其他特殊字符的输入非常重要。在与 find 结合时,常用于处理 -print0 的输出。
-n N / --max-args=N
每次执行目标命令时,传递给命令的最大参数数量为 N。这对于控制命令的参数数量非常有用,特别是在处理大量输入时。
-L N / --max-lines=N
指定每次执行命令时,最多读取 N 行输入。这对于控制输入数据的分段处理很有用。
-P N / --max-procs=N
并行运行 xargs 中的命令。N 指定最大并行进程数。这在需要加速批处理任务时非常有用。
-t / --verbose
在执行命令之前显示将要执行的命令。用于调试或查看 xargs 如何解释输入。
-E END / --eof=END
指定一个字符串作为输入结束的标记。如果遇到这个字符串,xargs 将停止读取输入。
-r / --no-run-if-empty
当输入为空时,不执行任何命令。默认情况下,xargs 会运行命令,即使没有输入。
-d CHAR / --delimiter=CHAR
使用指定的字符作为分隔符。这可以在不使用空字节分隔符的情况下,分隔输入。
-I REPLACE_STR / --replace=REPLACE_STR
指定一个字符串作为占位符,然后在命令中将其替换为输入中的数据。这使 xargs 可以以更灵活的方式处理参数。

例:

  1. 删除文件: 如果想删除当前目录及其子目录中的所有 .txt 文件,可以使用 findxargs 组合的方式:

    find . -name "*.txt" | xargs rm

    这个命令将 find 的输出传递给 xargs,然后 xargs 执行 rm 命令来删除这些文件。

  2. 查看文件内容: 如果想查看所有 .log 文件的内容,可以这样做:

    find . -name "*.log" | xargs cat

    这个命令将找到的所有 .log 文件的内容输出到控制台。

  3. 限制参数数量: 在某些情况下,命令行参数的数量可能受到限制,xargs 可以用 -n 选项来指定每次传递给目标命令的最大参数数量。例如,限制每次 ls 命令处理的文件数量为 5:

    find . -name "*.txt" | xargs -n 5 ls -l
  4. 处理特殊字符: 如果文件名包含空格或其他特殊字符,最好使用 -print0-0 选项,以确保文件名能够正确传递给 xargs

    find . -name "*.txt" -print0 | xargs -0 rm

    在这个例子中,-print0 用于生成以空字节 (null) 分隔的输出,-0 告诉 xargs 使用空字节分隔符,从而确保文件名中的特殊字符不会造成问题。这个用法可以对名字里带空格的文件进行处理,这是一个技巧,其中-print0和xargs -0都要有。

-exec和xargs的区别 

1. 执行方式:

  • -exec: -exec 直接在 find 中使用,可以为每个找到的文件执行一次命令。每个文件都将被单独处理。使用 {} 作为占位符来表示找到的文件。命令的末尾必须使用 \;+ 来结束。

  • xargs: xargs 通常与 find 结合使用,通过管道 (|) 将 find 的输出传递给 xargs,然后 xargs 可以将这些文件名作为命令参数进行批量处理。可以指定每次命令运行时处理多少个参数。

2. 效率:

  • -exec: 每找到一个文件就执行一次命令,因此当找到大量文件时,效率可能会较低。

  • xargs: xargs 通常将多个文件名合并为一个命令执行,因此在处理大量文件时效率更高。

3. 安全性:

  • -exec: 可以直接在 find 中使用,但在处理包含特殊字符(如空格、换行符等)的文件名时,必须小心处理。可通过 -exec ... + 来一次性处理多个文件。

  • xargs: 在处理包含特殊字符的文件名时,使用 -print0xargs -0 组合可确保安全,因为它使用空字节作为分隔符,从而避免了文件名解析错误的问题。

4. 灵活性:

  • -exec: 适合简单的操作,尤其是处理单个文件的情况。

  • xargs: 更灵活,可用于将文件名传递给各种命令。还可以使用 -n 来指定每次处理多少个参数,这在处理大量文件时非常有用。

总结:

  • 使用 -exec 在处理少量文件时很方便,但处理大量文件时效率较低。
  • 使用 xargs 在处理大量文件时效率更高,尤其是与 -print0xargs -0 结合使用时,可确保正确处理带有特殊字符的文件名。

 扩展查找

1.which

which是一个用于在Unix和Linux系统中查找可执行文件路径的命令。它可以告诉你指定命令的确切位置以及哪个版本的命令会被执行。这在寻找程序的安装位置、检查不同版本的冲突、确认路径设置等方面非常有用。

基本用法

which [命令]

which命令将返回指定命令在PATH环境变量中第一个匹配的路径。如果命令不存在,则不会返回任何内容。

常见示例

# 查找 `python` 可执行文件的位置 
which python 
# 查找 `gcc` 编译器的位置 
which gcc 
# 查找 `bash` Shell 的位置 
which bash

检查多个可执行文件

您可以使用 -a 选项来查找所有匹配的可执行文件。这在多版本共存或命令被覆盖的情况下很有用。

# 查找所有名为 `python` 的可执行文件 
which -a python 
# 查找所有名为 `gcc` 的编译器 
which -a gcc
应用场景
  • 查找命令路径:当您想知道某个命令的完整路径时,which会提供帮助。
  • 确认多版本:如果系统中安装了多个版本的同一命令,which -a可显示所有路径,便于选择使用哪个版本。
  • 检查 PATHwhich反映了系统的PATH环境变量,因此可以帮助你确认你的命令路径设置是否正确。
  • 排查问题:如果你运行某个命令遇到问题,which可以帮你确认你运行的是哪个可执行文件。

2.whereis 

whereis是Linux和Unix系统中用于查找命令、源代码、库文件和手册页的工具。它不仅可以告诉你可执行文件的位置,还可以找到与该命令相关的其他资源,如源代码和手册页。相比于whichwhereis提供了更全面的信息。

基本用法

whereis [命令]

whereis命令返回与指定命令相关的可执行文件、源代码和手册页的位置。结果可能因系统配置和安装情况而异。

常见示例

# 查找 `bash` 的相关文件 
whereis bash 
# 查找 `gcc` 的相关文件 
whereis gcc

输出可能包括多个路径,取决于命令是否在不同位置安装,以及是否有相关的源代码或手册页。

选项

whereis支持一些选项,以限制搜索范围或指定搜索内容:

  • -b:仅搜索可执行文件。
  • -m:仅搜索手册页。
  • -s:仅搜索源代码。
  • -l:显示whereis命令的搜索路径。
  • -f:停止处理选项,之后的所有参数被视为文件名。
应用场景
  • 查找可执行文件:确定命令的安装位置。
  • 查找手册页:了解命令的相关文档位置。
  • 查找源代码:获取命令的源代码,特别是用于开发或修改目的。
  • 验证系统配置:确认特定命令的所有相关资源在系统中是否存在。

3.type

type 是 Linux 和 Unix 系统中的一个内建命令,用于显示给定命令的类型、来源以及详细信息。它是一个强大的工具,可以告诉你某个命令是内建的、别名、脚本还是外部可执行文件。type 对于理解一个命令的具体位置和性质非常有用,特别是在命令名可能被覆盖或多版本共存的情况下。

基本用法

type [命令]

type 命令会返回给定命令的类型,如果是外部可执行文件,还会显示它的路径。如果是内建命令、别名或函数,type 会提供相应的解释。

常见示例

# 查看 `ls` 是什么类型的命令 
type ls 
# 查看 `cd` 是什么类型的命令 
type cd 
# 查看 `grep` 的路径和类型 
type grep
whichwhereis 的不同
  • which:仅查找外部可执行文件的路径。
  • whereis:查找外部可执行文件、源代码和手册页的路径。
  • type:显示命令的类型,包括内建命令、别名、函数和外部可执行文件,并提供更多上下文信息。

别名

如果一个命令是别名,type 会告诉你别名所对应的命令。

# 设置一个别名 
alias ll='ls -l' 
# 查看 `ll` 的类型 
type ll

内建命令

type 可以确认某个命令是否是 Shell 的内建命令。

# 查看 `cd` 是否是内建命令 
type cd

外部可执行文件

type 还可以显示外部可执行文件的路径。

# 查看 `python` 的位置和类型 
type python

综合示例

# 查看多个命令的类型 
type ls grep cd python 
# 查看是否有覆盖命令的别名 
alias ls='echo "Overridden!"' 
type ls
总结

type 命令是了解命令本质的强大工具,特别是在需要排查命令冲突、覆盖或理解命令来源的情况下。它的灵活性和信息量使其成为 Linux 和 Unix 系统中非常有用的诊断工具之一。

4.command -v

command -v 是 Linux 和 Unix 系统中的一个 Shell 内建命令,用于确定指定命令的类型和位置。它在功能上类似于 which,但作为内建命令,它通常比 which 更快,而且符合 POSIX 标准。command -v 返回指定命令的路径或类型信息,能够告诉你这个命令是外部可执行文件、内建命令、别名、函数,还是不可用。

基本用法

command -v [命令]

command -v 会返回给定命令的路径,如果命令是内建的、别名或函数,则会提供相应的解释。如果命令不存在,则返回空。

常见示例

# 查看 `ls` 的路径 
command -v ls 
# 查看 `cd` 是否是内建命令 
command -v cd 
# 查看 `python` 的可执行文件路径 
command -v python
区别与 which
  • command -v:作为 Shell 内建命令,符合 POSIX 标准,提供有关命令的路径或类型的信息。
  • which:外部命令,主要用于查找可执行文件的路径。在一些系统中,可能会因为配置不同而表现不同。

通常,command -v 更可靠,因为它由 Shell 内建,通常不受外部环境的影响。而 which 可能受系统环境或 PATH 配置的影响,导致结果有所不同。

type 的不同
  • command -v:简单地返回命令的路径或类型,如果命令不存在则返回空。
  • type:不仅显示命令的类型,还提供更多详细信息,如别名的定义、函数的内容等。
应用场景
  • 查找命令路径:确定命令的可执行文件位置。
  • 确认内建命令:检查命令是否为 Shell 的内建命令。
  • 检查别名和函数:判断命令是否是别名或函数。
  • 验证命令是否存在:确定某个命令是否可用。

示例

# 确认 `grep` 的路径 
command -v grep 
# 检查 `ls` 是否为别名 
alias ls='echo "Overridden!"' 
command -v ls 
# 确认 `cd` 是内建命令 
command -v cd

command -v 是一个非常有用的工具,适用于查找命令的位置、验证命令的类型以及判断命令的可用性。其符合 POSIX 标准的特点使其在各种 Shell 环境中表现一致。

二.过滤

grep 是 Linux 和 Unix 系统中用于在文本中搜索特定模式的强大工具。这个命令的名字源于 "Global Regular Expression Print",意味着它可以使用正则表达式在文本文件中查找匹配的行。grep 通常用于从文件中提取信息,检查日志,查找代码中的关键字等。以下是关于 grep 的基本用法、常见选项和示例。

基本用法

grep [选项] "模式" [文件...]

grep 搜索指定文件中的 "模式",并输出匹配的行。如果没有指定文件,则从标准输入读取。

常见选项

  • -i:忽略大小写。
  • -v:显示不匹配的行。
  • -c:只显示匹配的行数。
  • -l:只显示包含匹配行的文件名。
  • -n:显示匹配行的行号。
  • -r:递归搜索目录。
  • -E:使用扩展正则表达式。
  • -F:搜索固定字符串,而不是正则表达式。
  • -A N:显示匹配行后面的 N 行。
  • -B N:显示匹配行前面的 N 行。
  • -C N:显示匹配行前后各 N 行。

基本示例

# 在文件中查找包含 "error" 的行 
grep "error" application.log 
# 忽略大小写查找 "warning" 
grep -i "warning" application.log 
# 只显示包含 "INFO" 的文件名 
grep -l "INFO" /var/log/*.log

显示行号和反向匹配

# 查找并显示行号 
grep -n "TODO" source_code.c 
# 查找不包含 "DEBUG" 的行 
grep -v "DEBUG" application.log

递归搜索和显示上下文

# 在目录中递归查找 "main" 函数 
grep -r "main" /path/to/code 
# 显示匹配行及其前后各2行 
grep -C 2 "error" application.log

使用正则表达式

grep 支持基本正则表达式 (BRE),-E 选项用于扩展正则表达式 (ERE)。

# 查找包含 "error" 或 "warning" 的行 
grep -E "error|warning" application.log 
# 查找以数字结尾的行 
grep "[0-9]$" data.txt

在管道中使用

grep 经常与其他命令组合使用,通过管道操作输出流。

# 显示当前活动进程中包含 "bash" 的行 
ps aux | grep "bash" 
# 显示文件列表中包含 ".log" 的行 
ls -l | grep ".log"

其他用途

  • 统计匹配行数:使用 -c 选项。
  • 查找固定字符串:使用 -F 选项。
  • 排除特定行:使用 -v 选项。

复杂使用grep: 三剑客之grep-CSDN博客

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

矩阵相关运算1

矩阵运算是线性代数中的一个核心部分,它包含了许多不同类型的操作,可以应用于各种科学和工程问题中。 矩阵加法和减法 矩阵加法和减法需要两个矩阵具有相同的维度。操作是逐元素进行的: CAB or CA−B其中 A,B 和 C 是矩阵,且 C…

第12章 软件测试基础(第三部分)测试类型、测试工具

七、测试类型(按工程阶段划分) 单集系确收 (一)单元测试 1、单元测试/模块测试 单元就是软件中最小单位(或模块)。可以是一个函数、一个过程、一个类。主要依据是模块的详细设计文档。价值在于尽早发现…

2024年全域电商矩阵109节线上课

《24年全域电商矩阵109节线上课》是一门全面介绍电子商务领域的课程。从电子商务的基本概念到全球电子商务趋势,再到电子商务的营销策略和实际操作技巧,本课程涵盖了丰富多样的主题。学员将通过109节在线课程系统全面了解电子商务,并获得在这…

如何安全可控地进行内外网跨网络传输文件?

跨网络传输文件通常指的是在不同的网络环境之间移动数据,这在现代企业运营中非常常见。随着网络技术的高速发展,为了有效地保护内部的核心数据资产,企业一般会采用内外网隔离的策略。在进行内外网跨网络传输文件时,需要考虑多种因…

全国各地区劳动力流动、外出务工劳动力数、总劳动力数(2006-2021年)

01、数据简介 劳动力流动是指劳动力在不同地区、行业、职业、岗位之间的流动。它是劳动力市场运行的重要特征,也是实现劳动力资源优化配置的必要条件。劳动力流动可以促进劳动力资源的优化配置,提高劳动生产率和经济效益。据名称:全国各地区…

初始C++(一)

目录 前言: 命名空间: 总结: 前言: C语言学好了,现在当然要进阶了,那么就是从C开始。 C兼容C,支持其中90%的语法。可能有很多同学听说过C#,C#和C没有关系,是微软研究出…

SD-WAN对云服务的优化

在云服务日益普及的当下,SD-WAN技术正成为众多企业优化网络连接的首选方案。其通过优化云集成和连接,以及增强应用程序性能,为企业带来了前所未有的业务效益。这种革新性的云连接方式极大地促进了企业对全球劳动力和潜在客户的触达能力。 软件…

Java中Maven的依赖管理

依赖介绍 是指当前项目运行所需要的jar包&#xff0c;一个项目中可以引入多个依赖 配置 在pom.xml中编写<dependencies>标签 在<dependencies>中使用<dependency>引入标签 定义坐标的groupId、rtifactId、version 点击刷新按钮、引入新坐标 例如引入下…

git bash各分支修改内容不同但合并后不显示冲突问题

在跟着廖雪峰老师的git学习时&#xff0c;按部就班的执行明后&#xff0c;发现 而不是出现原文的结果 解决方法&#xff1a; 切换位feature分支&#xff0c;再合并 git switch feature1 git merge master 此时我们发现&#xff1a; 后面再跟着原文敲就可以了

【spark RDD】spark 之 Kryo高性能序列化框架

文章目录 一. RDD序列化的原因二. Kryo序列化框架三. spark 配置 kryo 序列化1. 设定kryo序列化2. 注册序列化类&#xff08;非必须&#xff0c;但是强烈建议做&#xff09;3. 配置 spark.kryoserializer.buffer 一. RDD序列化的原因 Spark初始化工作是在Driver端进行的&#…

机器人系统ros2-开发实践07-将机器人的状态广播到 tf2(Python)

上个教程将静态坐标系广播到 tf2&#xff0c;基于这个基础原理这个教程将演示机器人的点位状态发布到tf2 1. 写入广播节点 我们首先创建源文件。转到learning_tf2_py我们在上一教程中创建的包。在src/learning_tf2_py/learning_tf2_py目录中输入以下命令来下载示例广播示例代码…

【机器学习与实现】线性回归示例——波士顿房价分析

目录 一、创建Pandas对象并查看数据的基本情况二、使用皮尔逊相关系数分析特征之间的相关性三、可视化不同特征与因变量MEDV&#xff08;房价中值&#xff09;间的相关性四、划分训练集和测试集并进行回归分析 一、创建Pandas对象并查看数据的基本情况 boston.csv数据集下载&a…

Grotesque系列靶机Grotesque1

第一步信息收集&#xff1a; 靶机ip&#xff1a;192.168.108.131 攻击机IP&#xff1a;192.168.108.128 nmap扫描靶机的可用端口&#xff1a; 发现http服务的端口存在66端口和80端口 扫描一下靶机端口的http服务&#xff1a; 可以看到&#xff0c;默认的80端口是不存在的&am…

25_Scala集合Tuple

文章目录 tuple1.元组定义2.Tuple元素访问3.如果元素的len2&#xff0c;称之为键值对对象&#xff0c;也称之为对偶元组4.补充上节Map5.Map集合遍历6.集合之间相互转化 tuple 概念&#xff1a;scala语言采用特殊的方式将无关的数据作为一个整体&#xff0c;组合在一起’ 1.元…

【Git】Git学习-13:Gitee和GitLab的使用

学习视频链接&#xff1a;【GeekHour】一小时Git教程_哔哩哔哩_bilibili​编辑https://www.bilibili.com/video/BV1HM411377j/?vd_source95dda35ac10d1ae6785cc7006f365780 流程 1. 创建仓库/已有仓库 2. 克隆到本地/在远程仓库关联 git clone 仓库地址 git remote add 仓库别…

小语言模型的潜力

想象一下这样一个世界&#xff1a;智能助手不在云端&#xff0c;而是在你的手机上&#xff0c;无缝了解你的需求并以闪电般的速度做出响应。这不是科幻小说&#xff0c;而是科幻小说。这是小语​​言模型 (SLM) 的希望&#xff0c;这是一个快速发展的领域&#xff0c;有可能改变…

聪明与诚实:社会信任的桥梁

在现代社会中&#xff0c;我们经常听到这样的评价&#xff1a;“某人真聪明。”然而&#xff0c;当我们深入思考时&#xff0c;会发现“聪明”这个词背后所承载的含义并不单一。聪明和狡诈往往被混淆&#xff0c;而诚实的价值却时常被忽视。在一个高度诚信的社会里&#xff0c;…

CentOS 自建gitlab仓库:安装相关工具

所需环境 Node 安装项目依赖、项目打包运行Nginx 前端项目部署&#xff08;正向代理、反向代理、负载均衡等&#xff09;Git 自动化部署时 拉取代码使用GitLab 代码仓库GitLab-Runner GitLab的CI/CD执行器 一、安装Node 检测是否已安装 常用node -v 命令检测。 如果已安装&a…

【挑战30天首通《谷粒商城》】-【第一天】03、简介-分布式基础概念

文章目录 课程介绍 ( 本章了解即可&#xff0c;可以略过)1、微服务简而言之: 2、集群&分布式&节点2.1、定义2.2、示例 3、远程调用4、负载均衡常见的负裁均衡算法: 5、服务注册/发现&注册中心6、配置中心7、服务熔断&服务降级7.1、服务熔断7.2、服务降级 8、AP…

NVIDIA: RULER新测量方法让大模型现形

1 引言 最近在人工智能系统工程和语言模型设计方面的进展已经实现了语言模型上下文长度的高效扩展。以前的工作通常采用合成任务,如密钥检索和大海捞针来评估长上下文语言模型(LMs)。然而,这些评估在不同工作中使用不一致,仅揭示了检索能力,无法衡量其他形式的长上下文理解。 …
最新文章