`find` 返回不存在的路径

`find` 返回不存在的路径

当我尝试查找一些我怀疑已删除的文件(rm -rf)时,find返回了以下位置:

终端截图

这些名称下没有这样的目录/。有谁可以目录请引导我去正确的地方?

我甚至不知道自己在看什么,因此也许我很难提出正确的问题。

答案1

假设

您看不到完整路径,因为每个路径都包含一个以回车符结尾的部分(目录名)。

例如,如果真实路径是

/foo/bar/baz/qux/IMG_0283.MOV^M

其中^M表示回车符,则它将显示为

/baz/qux/IMG_0283.MOV

因为打印后/foo/bar字符串的剩余部分将从行首开始打印。它足够长,可以/foo/bar完全覆盖。

因此看起来文件好像位于 中的某个位置/baz/。这样的目录可能存在也可能不存在,这并不重要。即使存在,输出也与实际路径无关/baz/


关于 GNUfind

我的 Debian 9 中的GNUfind不受此类技巧的影响。当打印到控制台时,它的行为有点像,ls并用 替换麻烦的字符?。示例路径打印如下:

/foo/bar?/baz/qux/IMG_0283.MOV

但通过管道cat(即find … | cat)就足以看到:

/baz/qux/IMG_0283.MOV

正如上面解释的那样。

我知道这种行为? 不需要,这显然是 GNU 的改进。我认为find在 macOS 中不是 GNUfind。出于好奇,我检查了的 Busybox 实现find,它也不能幸免。

考虑到所有这些,我认为我的假设至少似乎是合理的。


解决方案

要显示真实路径,请将原始find命令传输到xxd或类似工具。我预计您会0d在每个命令前找到一个回车符 (十六进制 ) /dir_

相关内容