我有以下查找命令:
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
代替print
ANSI excape 颜色代码在 printf 命令的格式中,但解释如下这个答案find 的标志-printf
与 bash 中通常的内置标志不同,并且“颜色代码序列和需要%p
在同一个参数中”。这可以导致以下表达式:
find /home/ -print -type d -name "something" -printf '\033[;34m%p\033[0m\n'
这将打印出蓝色的匹配项
更多信息查找手册文档