为什么在 Unix 中搜索文件时会得到 ./filename 和文件名?

为什么在 Unix 中搜索文件时会得到 ./filename 和文件名?

请检查以下命令以供参考

Rinku@Akash ~/test
$ find . -type f -name "autosys*"
./autosys1.txt
./autosys2.txt

我不希望将源路径添加到找到的文件名中。

答案1

find输出所有以源路径作为前缀的匹配文件。与之比较:

 find $PWD -type f -name "autosys*"

答案2

因为finds 入口点.实际上是您的pwd.如果入口点是例如,/那么路径的这一部分将被添加到您的前面,pwd如下所示:

$ find / -type f -name "autosys*"
/path/from/root/to/$HOME/to/pwd/autosys1.txt

答案3

您可以通过传递文件名来去除路径的前导部分sed

find . -type f -name "autosys*" | sed 's!^\./!!'

对于包含嵌入换行符的文件,这将失败;如果这是一个问题,您需要考虑替代解决方案。但是,由于./是路径名的有效组成部分并且没有任何作用,因此删除它在技术上没有任何好处。 (不过,它看起来确实更好。)

相关内容