为什么 find 不将多个斜杠合并为一个?

为什么 find 不将多个斜杠合并为一个?

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

例如 的输出find .///是:

.///
.///somefile
[…]

find通过 GNU 和进行测试busybox

如果是这样那为什么呢?我缺少任何合理的用例吗?也许是因为有人正在 grepfind内部脚本的输出?

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

答案1

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

.//path/to/file
./name/more

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

find .// -print

相关内容