Find

為什麼用pwd找到現有文件但用find dot找到?

  • December 11, 2021

這很奇怪:

$ 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.

這與此處討論的原因基本相同:

特別是,find預設情況下不會遍歷符號連結 - 並且(至少假設您使用的是 bash shell)內置pwd命令也不會。您有許多選項可以使行為與目前目錄是符號連結時的行為pwd相同:.

  • 使用內置pwd,但使用強制解析符號連結pwd -P
  • 使用/bin/pwd代替pwd;在 Ubuntu 上,這幾乎肯定是 GNU Coreutils 實現,-P預設情況下假設
  • 通過添加命令行選項來告訴find在其命令行參數中遵循符號連結。-H

在最後一種情況下,您可以使用-Lin place of-H然而,它將跟隨符號連結無處不在,這可能會產生不同的結果find .

引用自:https://unix.stackexchange.com/questions/681097