我有一个包含可执行文件的目录,我想在这些可执行文件的帮助消息输出中搜索一个单词,即使用命令 ./executable1 --help 后在控制台中打印的文本。我想输出可执行文件的名称和搜索文本的出现,就像 grep 对文本文件所做的那样。我该怎么做?
我处理了一些接近的事情:
find -name "exec*" -executable -exec {} --help \; | grep "stringToBeSearchedFor" --
其中 find 应该有一些标准来查找所有可执行文件(在这个例子中,它们都以“exec”开头,所以这是合适的)。
但是,这不会打印匹配的可执行文件的名称。
答案1
我可能会使用 grep-H
和--label
选项:
--label=LABEL
Display input actually coming from standard input as input
coming from file LABEL. This can be useful for commands that
transform a file's contents before searching, e.g., gzip -cd
foo.gz | grep --label=foo -H 'some pattern'. See also the -H
option.
前任。
find . -type f -name 'exec*' -executable -exec sh -c '
for f; do "$f" --help | grep -H --label="$f" -- "stringToBeSearchedFor"; done
' sh {} +
如果帮助消息可能打印到标准错误流而不是标准输出流,请更改"$f" --help | grep ...
为"$f" --help 2>&1 | grep ...