ฉันจะหาลิงค์ยาก ๆ บน Windows ได้อย่างไร?


33

ฉันได้สร้างฮาร์ดลิงก์บางตัวในระบบไฟล์ Windows 7 ของฉันโดยใช้ mklink เมื่อไม่นานมานี้และฉันจำไม่ได้ว่าอยู่ที่ไหนหรือไฟล์ไหน เมื่อฉันใช้ Explorer ไฟล์ทั้งหมดจะเหมือนกัน เมื่อฉันใช้บรรทัดคำสั่งและพิมพ์ "dir" พวกเขาทั้งหมดดูเหมือนกัน

ฉันจะหาลิงค์ที่ยากได้อย่างไร หรือฉันจะตรวจสอบได้อย่างไรว่าไฟล์ใดไฟล์หนึ่งเป็นฮาร์ดลิงก์?

คำตอบ:


33

ไฟล์ทั้งหมดเป็นฮาร์ดลิงก์โดยมีจำนวนลิงก์อย่างน้อย 1 ไฟล์

นี่คือเหตุผลที่ไฟล์มีลักษณะเดียวกัน พวกเขามีเหมือนกัน สิ่งที่คุณกำลังมองหาคือไฟล์ที่มีลิงค์มากกว่าหนึ่งลิงค์ไปยังไฟล์ มีน้อยมากที่แยกความแตกต่างของไฟล์ที่มีจำนวนลิงค์มากกว่าหนึ่งจากไฟล์ที่มีจำนวนลิงค์ของหนึ่ง ... ยกเว้นจำนวนลิงค์ (และพฤติกรรมแปลก ๆ ที่เกี่ยวข้องกับคุณลักษณะและประทับวันที่)

และนั่นคือความตายที่ง่ายต่อการตรวจสอบด้วยfindคำสั่งที่อยู่ในชุดเครื่องมืออรรถประโยชน์ของSFUAของ Microsoft ที่ทำงานในระบบย่อยสำหรับแอปพลิเคชันที่ใช้ Unix :

หา -links +1


9
เช่นเดียวกับทราบ cygwin / bin / find ก็ใช้งานได้เช่นกัน ขอบคุณ!
arcyqwerty

6
เพียงเพื่อจะชัดเจน "Microsoft find" ถูกอ้างอิงในการแก้ปัญหาที่นี่ไม่ได้เริ่มต้นการติดตั้ง Windows 7 findคุณต้องดาวน์โหลดและติดตั้งใหม่ของ Microsoft จากนั้นคุณสามารถใช้findยูทิลิตีนั้น หรือติดตั้งfindคำสั่งของ Cygwin เช่น @arcyqwerty (ซึ่งน่าจะสนับสนุนระยะยาวได้ดีกว่า)
เทรเวอร์บอยด์สมิ ธ

2
fsutil hardlink list filenameนอกจากนี้ยังสามารถใช้ในตัว (ดูคำตอบของ Sergey )
Svish

28

บน Windows 7 ให้ใช้คำสั่ง:

fsutil hardlink list MyFileName.txt

จะแสดง hardlinks MyFileName.txtทั้งหมดไปยังไฟล์ที่มีชื่อ


โปรดทราบว่าคุณต้องเป็นผู้ดูแลระบบเพื่อเรียกใช้ fsutil
Alastair Maw

2
@AlastairMaw อย่างน้อยใน Windows 10 คุณไม่จำเป็นต้องเป็นผู้ดูแลระบบเพื่อเรียกใช้คำสั่งนั้น หรือมันจะทำงานเป็นผู้ดูแลระบบโดยไม่ต้อง UAC? (นั่นคือเป็นเพียงกลุ่มที่ไม่มีระดับความสูงจริง ๆ )
Paul Stelian

9

น่าเสียดายที่ไม่มีวิธีใดที่ระบบปฏิบัติการจะค้นหาลิงก์ทั้งหมดของคุณโดยไม่ต้องดูไฟล์แต่ละไฟล์

สำหรับ Explorer คุณสามารถดาวน์โหลดLink Shell Extension ที่มีประโยชน์มากซึ่งซ้อนทับไฟล์ด้วย hardlinks พร้อมลูกศรสีแดงคล้ายทางลัด

มันยังทำให้การสร้าง hardlink, symlink และ junctions ค่อนข้างง่ายผ่านเมนูบริบทของ Explorer

เรื่องไร้สาระโบนัส:

ในทางเทคนิคไฟล์ทั้งหมดเป็นฮาร์ดลิงก์ ดังนั้นคุณกำลังมองหาไฟล์ที่มีฮาร์ดลิงค์มากกว่าหนึ่งอัน


1
จริงๆแล้วมันคือ ดูคำตอบของ Sergey
Svish

1
คำตอบของ Sergey ใช้ได้กับส่วนที่สองของคำถาม แต่ไม่ใช่คำตอบแรก
surfasb

3

ใช้finddupe :

finddupe -listlink c:\photos

-listlink ทำให้ finddupe ในโหมดค้นหา hardlink ในโหมดนี้ finddupe จะแสดงรายการกลุ่มของไฟล์ที่เชื่อมโยงกัน อินสแตนซ์ hardlinked ทั้งหมดที่พบของไฟล์จะแสดงร่วมกัน อย่างไรก็ตาม finddupe สามารถค้นหาอินสแตนซ์ของไฟล์ hardlinked ที่อยู่ในเส้นทางการค้นหาเท่านั้น
Shayan

3

 วิธีง่ายๆในการตรวจสอบครั้งเดียว: คุณลักษณะของไฟล์เปลี่ยนไปพร้อมกันไหม

หากคุณต้องการทดสอบว่าไฟล์AและBเป็นฮาร์ดลิงก์ไปยังเนื้อหาเดียวกันและคุณไม่ต้องการติดตั้งหรือรันอะไรให้เปิดหน้าต่างPropertiesของไฟล์Aและสลับไปมาตัวอย่างเช่นแอตทริบิวต์อ่านอย่างเดียว ตอนนี้เปิดหน้าต่างคุณสมบัติของไฟล์Bเพื่อดูว่ามีการเปลี่ยนแปลงแอททริบิวต์ (ของไฟล์A) หรือไม่ ถ้าใช่คำตอบนั้นเป็นค่าบวก

ทำไมจึงใช้งานได้ เนื่องจากฮาร์ดลิ้งค์ที่เกี่ยวข้องนั้นมีการแชร์แอตทริบิวต์ไฟล์และการประทับเวลาชุดเดียวกัน

สิ่งนี้กล่าวว่าการทดสอบเดียวกันสามารถทำกับการประทับเวลาของไฟล์ แต่ไม่สามารถเปลี่ยนแปลงได้อย่างง่ายดายเหมือนกับการตั้งค่าสถานะอ่านอย่างเดียวเพื่อดำเนินการตรวจสอบ

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