mun*_*air 6 command-line slash find filenames
我正在使用这样的命令查询服务器:
find ./ -type f -name 'filename"
Run Code Online (Sandbox Code Playgroud)
我有很多文件开头
.//library
Run Code Online (Sandbox Code Playgroud)
或者
.//user
Run Code Online (Sandbox Code Playgroud)
这些东西是什么意思?
它没有多大意义:您提供的模式find是./,并且很容易find将其结果粘贴到该路径上。双斜线被忽略(被视为单斜线),但前导双斜线对某些系统可能具有某种意义。更重要的是,可移植程序假定了这种行为。
但是,您只会在使用旧版本find(例如 OSX)的BSD 派生系统中看到这种特殊行为。NetBSD 在2005 年试图在他们的源代码中修复这个问题。OSX 的用户空间较旧。
检查“最近的”FreeBSD、NetBSD 和 OpenBSD,没有一个会产生这种行为。Linux 和 Unix(AIX、HPUX、Solaris)同样没有。
进一步阅读:
find - 查找文件(POSIX)
该
find实用程序应从 path 指定的每个文件递归地降低目录层次结构,为遇到的每个文件评估由 OPERANDS 部分中描述的主要组成的布尔表达式。每个路径操作数应当被评估不变,因为它是提供,包括所有尾随<slash>字符; 层次结构中遇到的其他文件的所有路径名应由当前路径操作数的串联组成,<slash>如果当前路径操作数不是以一个结尾,则为相对于路径操作数的文件名。相对部分不应包含点或点-点组件、尾随<slash>字符以及路径名组件之间的单个字符。