如何从 find 命令获取调试输出?

如何从 find 命令获取调试输出?

我有以下查找命令:

find /home/  -type d -name "something"

我想要实现的是知道 find 命令检查了哪个目录/文件,无论它是否与我设置的名称匹配。

基本上,我想看到启动上述代码后 find 命令将执行的每个操作。

谢谢你!

答案1

lsof -p `pidof find`

您可以看到,您的查找命令当前在哪里。

strace -p `pidof find`

您可以检查它当前正在做什么。

它们都没有真正漂亮的输出——它们是调试工具,但了解它们的输出也非常有用。

答案2

find 的 man 文件有调试选项

你可能想要find -D search -type d -name "something" 2>&1

它似乎不在手册文件中,但是find -D help

印刷

搜索详细浏览目录树

答案3

尽管上述两个命令确实回答了这个问题,但我想提供一个不太详细的输出来满足该部分:

知道 find 命令检查了哪个目录/文件,无论它是否与我设置的名称匹配。

find /home/-print-type d -name "something"

使用-print表达式。

如手册中所述:

  • 如果没有给出表达式,则默认使用表达式 -print就像放在命令末尾一样
    • find /home/ -type d -name "something"
      • 就像是 -->find /home/ -type d -name "something" -print

但如果你将打印表达式放在开头,如下所示

  • find /home/-print-type d -name "something"
    • 它将打印出每一个文件正在检查
      • 当然,匹配的文件也将被打印,因为它是已检查文件的一部分,但你无法知道它是哪一个

如果将打印表达式放在开头结尾:

  • find /home/-print-type d -name "something"-print
    • 它将打印出每一个文件正在检查
    • 它将打印出每一个匹配文件

所以现在匹配的文件会出现两次。虽然如果文件很多的话会有点难看。

因此,您可以使用 表达式printf代替printANSI excape 颜色代码在 printf 命令的格式中,解释如下这个答案find 的标志-printf与 bash 中通常的内置标志不同,并且“颜色代码序列和需要%p在同一个参数中”。这可以导致以下表达式:

find /home/ -print -type d -name "something" -printf '\033[;34m%p\033[0m\n'

这将打印出蓝色的匹配项

更多信息查找手册文档

相关内容