การลบไฟล์และลิงก์ทั้งหมด - ฮาร์ดและสัญลักษณ์


1

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

rm -f file.txtลบเฉพาะไฟล์ ยิ่งไปกว่านั้นถ้ามีฮาร์ดลิงก์อื่น ๆ ของระบบไฟล์ไฟล์จะไม่ถูกลบ

วิธีที่มีประโยชน์มากที่สุดในการทำเช่นนี้คืออะไร?

หรืออาจจะมีคำสั่งให้รับลิงค์ทั้งหมดของไฟล์

คำตอบ:


2

ใช้ls -li filenameเพื่อรับไอโหนดของไฟล์ จากนั้นfind <the same filesystem> -inum <inode>ให้รับไฟล์ที่มีไอโหนดเดียวกัน

สิ่งนี้จะช่วยให้คุณค้นหาสำเนาของไฟล์ทั้งหมด (ฮาร์ดลิงก์) ซอฟต์ลิงค์นั้นไม่น่าสนใจเพราะมันชี้ไปที่ไฟล์ต้นฉบับ


1
... พวกเขาก็ชี้ไปที่ไฟล์เดิมชื่อ แต่ฉันเห็นด้วยกับคำตอบ
rici

1

หากต้องการค้นหาลิงก์ทั้งหมดไปยังไฟล์ฮาร์ดและสัญลักษณ์ให้ใช้findคำสั่งด้วยตัวเลือก-Lและ-samefileตัวเลือกดังนี้:

find / -L -samefile file.txt

คุณสามารถรวมสิ่งนั้นกับrmหรือกับการfind -deleteกระทำเพื่อลบไฟล์เหล่านั้นในคำสั่งเดียว แต่มันทำให้ฉันกังวลที่จะทำอย่างนั้นโดยไม่ต้องทบทวนรายการไฟล์ที่จะลบก่อน นอกจากนี้หากคุณลบ file.txt ก่อนที่คุณจะพบลิงก์ทั้งหมดลิงก์นั้นจะหาลิงก์ได้ยากกว่ามาก


1
-Lควรนำเส้นทางการค้นหา แต่ผมไม่แนะนำให้มันเป็นสัญลักษณ์การเชื่อมโยงสามารถใช้ค้นหาลงในระบบไฟล์อื่น ๆ find <File System root> -lname "*FileName" -exec ls -l {} \;คุณจะดีกว่าที่จะใช้ *เป็นเพราะการเชื่อมโยงอาจจะระบุเป็นชื่อที่ง่ายหรือนำโดยเส้นทางไดเรกทอรี (แน่นอนหรือญาติ) แต่มันอาจจะทำให้เท็จพบ - ชื่อที่มีอักขระพิเศษในด้านหน้าหรือชื่อเดียวกันในไดเรกทอรีอื่น ๆ คือlsจะแสดงให้คุณ ลิงค์ใดที่มีอยู่และไฮไลต์จะแสดงว่าไฟล์ไหนที่ตายไปหากคุณรันคำสั่งหลังจากลบไฟล์และฮาร์ดลิงก์
AFH
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.