ฉันกำลังมองหาวิธีในการค้นหาลิงก์สัญลักษณ์ทั้งหมดในระบบไฟล์ NTFS บน Windows Vista หรือ 7
มันจะดีกว่านี้ถ้าฉันสามารถระบุเป้าหมายที่เฉพาะเจาะจงเพื่อดูว่ามันมีสัญลักษณ์เชื่อมโยงชี้ไปที่ใด แต่วิธีในการค้นหาพวกเขาทั้งหมดนั้นก็ยอดเยี่ยม
ฉันกำลังมองหาวิธีในการค้นหาลิงก์สัญลักษณ์ทั้งหมดในระบบไฟล์ NTFS บน Windows Vista หรือ 7
มันจะดีกว่านี้ถ้าฉันสามารถระบุเป้าหมายที่เฉพาะเจาะจงเพื่อดูว่ามันมีสัญลักษณ์เชื่อมโยงชี้ไปที่ใด แต่วิธีในการค้นหาพวกเขาทั้งหมดนั้นก็ยอดเยี่ยม
คำตอบ:
นี่เป็นวิธีที่ดีที่สุดที่ฉันพบ:
dir /a:l /s
แต่มันน่าเกลียด ฉันต้องการรายชื่อที่แสดงหนึ่งไฟล์ต่อบรรทัดในรูปแบบของ target => source หรืออะไรที่คล้ายกัน การ Grepping สำหรับ SYMLINK ทำได้ไม่ดีนักเนื่องจากรูปแบบหลายบรรทัด สวิตช์ / B bare ไม่ได้ให้อะไรนอกจากชื่อไฟล์เป้าหมายเช่นกัน
โปรดทราบว่า grep เป็นเครื่องมือหลายบรรทัด คุณสามารถใช้ - และเพื่อจับทั้งบรรทัดก่อนหน้าและถัดไปและ - เพื่อเพียงแค่จับเส้นถัดไป ตัวอย่างเช่นการกำหนดค่า grep -A10 จะคว้าสิบบรรทัดถัดไปหลังจากค้นหาคำว่า "กำหนดค่า" หากคุณมี 2 อินสแตนซ์ของคำว่ากำหนดค่า 3 บรรทัดแยกกันคุณจะได้รับผลรวมทั้งหมด 14 บรรทัด
เนื่องจากการค้นหาทุกอย่างได้รับการเขียนใหม่ (มกราคม 2013) คุณจึงสามารถค้นหาแอตทริบิวต์ได้ ข้อความค้นหา " attrib: L " จะแสดงลิงก์สัญลักษณ์ทั้งหมดในคอมพิวเตอร์ของคุณ แสดงคอลัมน์คุณสมบัติ (Ctrl + Shift + 8) เพื่อจัดเรียงตามแอตทริบิวต์
นอกจากนี้คุณยังสามารถสร้างตัวกรองสำหรับการค้นหาแอททริบิวต์นั้น (ค้นหา, เพิ่มไปยังฟิลเตอร์) หากคุณทำการค้นหาประเภทนั้นบ่อยครั้งหรือต้องการกำหนดแป้นพิมพ์ลัด
ฉันสังเกตเห็นว่าattribเริ่มต้น: การค้นหาดูเหมือนจะล็อคทุกอย่างชั่วคราว แต่เสร็จหลังจากนั้นไม่กี่วินาที ... คุ้มค่ากับการรอคอยเล็กน้อยสำหรับเครื่องมืออันทรงพลัง
ลองSageLinks - ยูทิลิตี้ฟรีแวร์โอเพนซอร์สขนาดเล็กสำหรับ Windows สามารถค้นหาและตรวจสอบ symlink ทั้งหมดรวมถึง junctions และทางลัดอีกครั้ง:
คุณสามารถลองใช้เครื่องมือฟรีJunction โดย SysInternals
หากต้องการค้นหา symlink ทั้งหมดในไดรฟ์ให้ไปที่รูทและพิมพ์:
C:\> junction -s -q
-s ต้องผ่านไดเรกทอรีย่อยทั้งหมด
-q จะละเว้นข้อผิดพลาดเช่น "การเข้าถึงถูกปฏิเสธ"
นั่นจะให้คะแนนการแยกวิเคราะห์ทั้งหมดที่ Windows ใช้อยู่ในปัจจุบัน
หากคุณต้องการตรวจสอบว่าไฟล์หรือโฟลเดอร์เฉพาะเป็นจุดแยกวิเคราะห์ใหม่เพียงพิมพ์ชื่อยูทิลิตี้และชื่อไฟล์ / โฟลเดอร์หลังจาก ระวังชื่อโฟลเดอร์เนื่องจากการเพิ่มแบ็กสแลชอาจเปลี่ยนผลลัพธ์
C:\> junction c:\apps
Junction v1.06 - Windows junction creator and reparse point viewer
Copyright (C) 2000-2010 Mark Russinovich
Sysinternals - www.sysinternals.com
c:\apps: JUNCTION
Substitute Name: e:\dropbox\apps
C:\>
ฉันก็กำลังมองหาความสามารถนี้และไม่ได้เห็นที่อื่น ฉันเพิ่มลงในไลบรารี Windows ของฉันสำหรับ Python แล้ว น่าเสียดายที่ถ้าคุณยังไม่ได้เป็นโปรแกรมเมอร์ Python คุณก็มีหลายขั้นตอนในการติดตั้งทุกอย่าง
x
\Python26\scripts\easy_install jaraco.windows
หลังจากทำตามขั้นตอนเหล่านี้คุณควรมีสคริปต์ชื่อ \ python26 \ scripts \ find-symlinks.exe หรือ \ python26 \ scripts \ find-symlinks-script.py ซึ่งคุณสามารถดำเนินการด้วยชื่อพา ธ ที่เป็นตัวเลือกเพื่อค้นหา symlink มันจะค้นหา symlink และรายงานผลลัพธ์แต่ละบรรทัด ฉันทดสอบขั้นตอนนี้ในการติดตั้ง Windows 7 ใหม่ทั้งหมด
> cmd /c mklink /d mylink \windows
symbolic link created for mylink <<===>> \windows
> cmd /c mklink myfilelink \windows\notepad.exe
symbolic link created for myfilelink <<===>> \windows\notepad.exe
> \python26\scripts\find-symlinks
D .\mylink --> \windows
.\myfilelink --> \windows\notepad.exe
Cygwin / bash script สำหรับ win7
c:\> cat find-dead-links.sh
#!/usr/bin/bash
find . -maxdepth 3 -type l -print0 |
while IFS= read -r -d $'\0' file ;do
[[ -e "$file" ]] && continue
echo "Bad link $file"
done