จะค้นหาและแสดงรายการลิงก์สัญลักษณ์ทั้งหมดที่สร้างขึ้นสำหรับไฟล์ใดไฟล์หนึ่งได้อย่างไร


52

ฉันสร้างลิงก์สัญลักษณ์มากมายบนเส้นทางที่หลากหลายสำหรับไฟล์หรือไดเรกทอรีเฉพาะ ฉันต้องการรายการเส้นทางสัญลักษณ์เชื่อมโยงที่สร้างขึ้นทั้งหมด (ตำแหน่ง)

ตัวอย่าง:

ฉันสร้างลิงก์สัญลักษณ์สำหรับ~/Picturesไดเรกทอรีในหลาย ๆ ไดเรกทอรี ฉันจะแสดงรายการลิงก์ทั้งหมดไปยัง~/Picturesไดเรกทอรีนั้นได้อย่างไร

เป็นไปได้ไหม ถ้าใช่แล้วได้อย่างไร


คุณต้องค้นหาอย่างละเอียดไม่มีการจัดเก็บจำนวนเหมือนมีการเชื่อมโยงอย่างหนัก ดูหนึ่งในคำตอบที่ใช้ค้นหา
ctrl-alt-delor

คำตอบ:


42

นี่คือตัวอย่าง:

find -L /dir/to/start -xtype l -samefile ~/Pictures

หรืออาจจะดีกว่า:

find -L /dir/to/start -xtype l -samefile ~/Pictures 2>/dev/null

เพื่อกำจัดข้อผิดพลาดบางอย่างเช่นPermission denied, Too many levels of symbolic linksหรือFile system loop detectedที่findโยนพวกเขาเมื่อไม่ได้รับสิทธิ์หรือสถานการณ์อื่น ๆ

  • -L - ติดตามลิงก์สัญลักษณ์

  • -xtype l - ไฟล์เป็นลิงค์สัญลักษณ์

  • -samefile name- nameไฟล์หมายถึงไอโหนดเดียวกับ เมื่อ-Lมีผลบังคับใช้สิ่งนี้อาจรวมถึงลิงก์สัญลักษณ์

หมายเหตุ:

  • ใช้ L ตัวพิมพ์เล็ก-xtype lไม่ใช่ตัวเลข 1
  • บน MacOS / ดาร์วินคือ-xtype-type

สามารถแก้ไขคำสั่งเพื่อค้นหาลิงก์สัญลักษณ์ที่มีพา ธ หรือไม่? เช่นไฟล์ทั่วทั้งระบบที่อาจเชื่อมโยงไปยัง ~ / Pictures / A, ~ / Pictures / A / B / C, หรือไฟล์ใด ๆ ในไดเรกทอรีย่อยของ ~ / Pictures>
snowbound

7

ง่ายมากใช้ตัวเลือก-lname:

find / -lname /path/to/original/dir

จากman find:

-lname pattern
       File is a symbolic link whose contents match shell pattern pattern.  The
       metacharacters do not treat `/' or `.' specially.  If the -L option or the
       -follow option is in effect, this test returns false unless the symbolic link
       is broken.

หมายเหตุ : โปรดจำไว้ว่าลิงก์สัญลักษณ์อาจอยู่ที่ใดก็ได้ซึ่งรวมถึงระบบระยะไกล (หากคุณแชร์ไฟล์) ดังนั้นคุณอาจไม่สามารถค้นหาได้ทั้งหมด


โปรดทราบว่าหาก symlink เป็นเส้นทางแบบสัมพัทธ์เช่น../dirนั้นจะไม่พบสัมบูรณ์/path/to/original/dirคุณสามารถใช้รูปแบบแทนและคัดออกผลบวกปลอม-lname \*dir
Jason S

2

ลองสิ่งนี้:

ls -i ~/

277566 Pictures

find . -follow -inum 277566(ค้นหาไดเรกทอรีที่มีหมายเลขไอโหนดเดียวกัน)

มันจะแสดงเส้นทางเชื่อมโยงสัญลักษณ์ทั้งหมด


4
นี่จะพบลิงก์ที่ยากไม่ใช่ลิงก์ที่เป็นสัญลักษณ์ ฮาร์ดลิงก์ใช้หมายเลขไอโหนดร่วมกัน ลิงก์สัญลักษณ์มีหมายเลขไอโหนดที่แตกต่างกัน inode ของลิงก์สัญลักษณ์มีพา ธ แทนที่จะเป็นรายการบล็อก
hildred

คำถามไม่ได้กล่าวถึงลิงก์สัญลักษณ์อ่อนหรืออ่อนนุ่ม
nux

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.