如何搜索程序帮助信息的输出(例如使用 grep)

如何搜索程序帮助信息的输出(例如使用 grep)

我有一个包含可执行文件的目录,我想在这些可执行文件的帮助消息输出中搜索一个单词,即使用命令 ./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 ...

相关内容