为什么用 `pwd` 查找找不到现有文件,但用 find dot 找到?

为什么用 `pwd` 查找找不到现有文件,但用 find dot 找到?

这很奇怪:

$ ls -l 'Lana Del Rey - Blue Jeans (Remastered 2011).mp3'
-rw-rw-r-- 1 gigi gigi 4.0M Dec 11 23:06 'Lana Del Rey - Blue Jeans (Remastered 2011).mp3'

$ find . -name 'Lana Del Rey - Blue Jeans (Remastered 2011).mp3'
./Lana Del Rey - Blue Jeans (Remastered 2011).mp3

# but still in the same directory:
$ find `pwd` -name 'Lana Del Rey - Blue Jeans (Remastered 2011).mp3'
# nothing found!
# directly using the path pointed by pwd will produce the same nothing-found situation
# with pwd followed by / it works
$ find `pwd`/ -name 'Lana Del Rey - Blue Jeans (Remastered 2011).mp3'
/home/gigi/Music/Youtube_mp3/Lana Del Rey - Blue Jeans (Remastered 2011).mp3
$ pwd
/home/gigi/Music/Youtube_mp3

这种情况发生在 Ubuntu 21.10(实际上是 XUbuntu)上。
我不使用与 重叠的别名find

答案1

这与此处讨论的原因基本相同:

特别是,find默认情况下不遍历符号链接 - 并且(至少假设您使用的是 bash shell)内置pwd命令也不遍历。您有许多选项可以使行为与当前目录是符号链接时的pwd行为相同:.

  • 使用内置的pwd,但使用强制解析符号链接pwd -P

  • 使用/bin/pwd而不是pwd;在 Ubuntu 上,这几乎肯定是 GNU Coreutils 实现,-P默认情况下假设

  • 通过添加命令行选项,告诉find在其命令行参数中遵循符号链接-H

在最后一种情况下,您可以使用-L代替,-H但是它将随处跟随符号链接,这可能会产生与以下不同的结果find .

相关内容