find 没有将多个斜杠合并为一个的任何原因?

phk*_*phk 1 slash standard find compatibility filenames

是否真的find不应该进行最简单的路径统一/简化操作,例如将多个连续的斜杠合并在一起(相当于原始形式)?

例如输出find .///是:

.///
.///somefile
[…]
Run Code Online (Sandbox Code Playgroud)

(测试find来自 GNU 和busybox

如果是这样,那是为什么?有没有我遗漏的合理用例?也许对于有人正在搜索find内部脚本的输出的情况?

顺便说一句,同样有趣的是 GNU 的 find for find ./// -maxdepth 0 -printf '%h\n'(的输出%h应该是“文件名的前导目录(除了最后一个元素和它之前的斜杠之外的所有目录)”):(.//只是少了一个/

ica*_*rus 6

如果您没有可以理解 NUL 字符的实用程序,则可以使用这种历史行为来区分文件。find 的输出永远不会在一行中包含两个斜杠,除非它们作为初始路径的一部分提供。这意味着输出像

.//path/to/file
./name/more
Run Code Online (Sandbox Code Playgroud)

告诉你有一个目录被调用,file\n.而不是当前目录的子目录调用,name如果你调用 find

find .// -print
Run Code Online (Sandbox Code Playgroud)