答案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_
。