ฉันจะลบไฟล์และลิงก์ทั้งหมดที่เกี่ยวข้องกับไฟล์เพื่อลบได้อย่างไร
rm -f file.txt
ลบเฉพาะไฟล์ ยิ่งไปกว่านั้นถ้ามีฮาร์ดลิงก์อื่น ๆ ของระบบไฟล์ไฟล์จะไม่ถูกลบ
วิธีที่มีประโยชน์มากที่สุดในการทำเช่นนี้คืออะไร?
หรืออาจจะมีคำสั่งให้รับลิงค์ทั้งหมดของไฟล์
ฉันจะลบไฟล์และลิงก์ทั้งหมดที่เกี่ยวข้องกับไฟล์เพื่อลบได้อย่างไร
rm -f file.txt
ลบเฉพาะไฟล์ ยิ่งไปกว่านั้นถ้ามีฮาร์ดลิงก์อื่น ๆ ของระบบไฟล์ไฟล์จะไม่ถูกลบ
วิธีที่มีประโยชน์มากที่สุดในการทำเช่นนี้คืออะไร?
หรืออาจจะมีคำสั่งให้รับลิงค์ทั้งหมดของไฟล์
คำตอบ:
ใช้ls -li filename
เพื่อรับไอโหนดของไฟล์ จากนั้นfind <the same filesystem> -inum <inode>
ให้รับไฟล์ที่มีไอโหนดเดียวกัน
สิ่งนี้จะช่วยให้คุณค้นหาสำเนาของไฟล์ทั้งหมด (ฮาร์ดลิงก์) ซอฟต์ลิงค์นั้นไม่น่าสนใจเพราะมันชี้ไปที่ไฟล์ต้นฉบับ
หากต้องการค้นหาลิงก์ทั้งหมดไปยังไฟล์ฮาร์ดและสัญลักษณ์ให้ใช้find
คำสั่งด้วยตัวเลือก-L
และ-samefile
ตัวเลือกดังนี้:
find / -L -samefile file.txt
คุณสามารถรวมสิ่งนั้นกับrm
หรือกับการfind
-delete
กระทำเพื่อลบไฟล์เหล่านั้นในคำสั่งเดียว แต่มันทำให้ฉันกังวลที่จะทำอย่างนั้นโดยไม่ต้องทบทวนรายการไฟล์ที่จะลบก่อน นอกจากนี้หากคุณลบ file.txt ก่อนที่คุณจะพบลิงก์ทั้งหมดลิงก์นั้นจะหาลิงก์ได้ยากกว่ามาก
-L
ควรนำเส้นทางการค้นหา แต่ผมไม่แนะนำให้มันเป็นสัญลักษณ์การเชื่อมโยงสามารถใช้ค้นหาลงในระบบไฟล์อื่น ๆ find <File System root> -lname "*FileName" -exec ls -l {} \;
คุณจะดีกว่าที่จะใช้ *
เป็นเพราะการเชื่อมโยงอาจจะระบุเป็นชื่อที่ง่ายหรือนำโดยเส้นทางไดเรกทอรี (แน่นอนหรือญาติ) แต่มันอาจจะทำให้เท็จพบ - ชื่อที่มีอักขระพิเศษในด้านหน้าหรือชื่อเดียวกันในไดเรกทอรีอื่น ๆ คือls
จะแสดงให้คุณ ลิงค์ใดที่มีอยู่และไฮไลต์จะแสดงว่าไฟล์ไหนที่ตายไปหากคุณรันคำสั่งหลังจากลบไฟล์และฮาร์ดลิงก์