什么是有效的语法来组合命令传递到find与-exec选择?
例子:
find . -type f -name "*.txt" -exec grep FirstKeyWord {} | grep SecondKeyWord \;
Run Code Online (Sandbox Code Playgroud)
失败并显示以下错误消息:
find: grep: missing argument to `-exec`
;: No such file or directory
Run Code Online (Sandbox Code Playgroud)
使用&&或;代替组合命令时,也会出现相同类型的故障|。我什至尝试用 ' 或 $() 或 {} 等引用组合命令,但它(悲惨地)失败了。
注意:我正在寻找一种单行解决方案,而不使用自定义脚本。
Eri*_*ric 10
您可以通过在 exec 参数中显式调用 shell 来使用复杂的 shell 命令。
find . -type f -name "*.txt" -exec sh -c 'grep FirstKeyWord "$1" | grep SecondKeyWord' -- {} \;
Run Code Online (Sandbox Code Playgroud)
这sh使用为每个文件提供的命令列表执行,在$1.
编辑:OP 指出这有效并且更简单:
find . -type f -name "*.txt" -exec sh -c 'grep FirstKeyWord {} | grep SecondKeyWord' \;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18938 次 |
| 最近记录: |