บน Linux
cd /tmp
mkdir foo; cd foo
ตอนนี้ทำงาน
find . -name 'foo'
ไม่ให้ผลลัพธ์ ในขณะที่วิ่ง
find /tmp/foo -name 'foo'
ให้ผลลัพธ์/tmp/foo
ที่ไม่สมเหตุสมผลกับฉัน มีใครอธิบายได้ไหม
find
สิ่งที่ผมไม่เข้าใจคือทำไมมันได้สร้างความแตกต่างถ้าฉันให้เส้นทางสัมบูรณ์ไปยัง
bar
ที่ชี้ไปยังไฟล์foo
ที่อยู่นอกเส้นทางการค้นหา ตรงกับที่ว่าหรือไม่?
.
และ/tmp/foo
จะไม่เหมือนกัน - พวกเขาเป็นสองเชื่อมโยงอย่างหนักที่แตกต่างกันไปยังไดเรกทอรีเดียวกัน; find /tmp/foo/. -name 'foo'
ไม่พบอะไรเลย
find /tmp/foo -name 'foo'
ฉันขอให้ทุบตีหาในไดเรกทอรี/tmp/foo
ไฟล์ที่มีชื่อว่า "foo" เนื่องจากไดเรกทอรี/tmp/foo
ว่างเปล่าจึงไม่ควรส่งคืนสิ่งใด ฉันไม่เข้าใจว่าทำไมมันกลับ/tmp/foo
มา ในทางกลับกันเมื่อฉันวิ่งfind . -name 'foo'
ฉันก็ขอทุบตีสิ่งเดียวกันนั่นคือการค้นหาไฟล์ในไดเรกทอรีปัจจุบัน (ซึ่งเกิดขึ้นได้/tmp/foo
) ซึ่งมีชื่อว่า 'foo' และจะไม่ส่งคืนสิ่งใดที่สมเหตุสมผล
./
จะไม่ตรงกันfoo