Linux shell -查找字符(find,xargs,grep)

本文介绍了一种在当前目录下查找包含特定字符串'jmxremote'的文件的方法。使用了find命令结合grep来实现这一目标,具体命令为:find . -type f | xargs grep 'jmxremote'。该命令首先查找所有普通文件,然后筛选出包含指定字符串的文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

在当前目录下查找含有jmxremote字符的文件

test@>find . -type f|xargs grep "jmxremote"

 

. 当前目录

-type 查找文件类型

f 普通文件

xargs 对于提供find管道参数传输

grep 查找字符jmxremote

转载于:https://www.cnblogs.com/recognition/p/5342323.html

这个命令行是一个Linux shell脚本,用于在一个目录下查找所有的文本文件(`type f`),然后对每个文件执行`grep`命令查找包含特定模式的内容,并将结果输出到另一个文件。这里的关键点包括`eval`、管道符`|`和`gawk`。 `eval`通常用于动态执行字符串内容作为命令,但它在这个上下文中的问题是它会直接执行接收到的字符串,而不是像预期那样作为一个完整的命令块。因此,当你尝试使用`eval`来构造并执行复杂的shell命令时,如果没有正确地用大括号`{}`包裹起来,它会当作一个单独的命令行片段来解析,而不会按照意图分隔成各个部分。 没有大括号导致了两个问题: 1. `grep -ilE`这部分没有被正确地视为一个整体命令,`grep`后面的选项可能会被误解或错误处理。 2. `gawk`代码块也没有被正确识别为独立的命令,`'{print "检索对象:" $0}'`会被立即当作一条命令执行,而不是作为`gawk`命令的一部分。 正确的做法应该是把整个复杂命令作为一个字符串传递给`eval`,并在需要的地方使用`{}`来创建真正的命令块。例如,如果要用`eval`,应该确保整个命令被正确地括号包围: ```bash eval "$(find . -type f -exec grep -ilE 'your_pattern' {} \; | xargs gawk '{print "检索对象:" $0}') > output_file" ``` 但是,由于`eval`的安全风险,推荐使用更安全的方式来构建这样的命令,如使用`xargs`直接执行,避免使用`eval`。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值