ฉันมีไดเรกทอรี "myfiles" ขนาดใหญ่เต็มไปด้วยเอกสารเบ็ดเตล็ดและไม่ต้องการแก้ไขโครงสร้าง
ฉันจึงสร้าง (หลาย) ไดเรกทอรีอื่น ๆ สำหรับแต่ละชั้นของเอกสาร ตัวอย่างเช่นฉันมีไดเรกทอรี "images" ซึ่งมีsymlink ไปยังแต่ละไฟล์.jpg
หรือ.cr2
ในไดเรกทอรี "myfiles" พร้อมไฟล์อธิบายอื่น ๆ สำหรับแต่ละ symlink (ที่มีชื่อไฟล์เดียวกัน) พร้อมคำอธิบายและข้อมูลเมตาอื่น ๆ symlink ในไดเร็กทอรี / images อาจมีชื่อแตกต่างจากไฟล์ที่ลิงก์ดั้งเดิม
ฉันพยายามหาวิธีที่ง่ายที่สุดเพื่อให้แน่ใจว่าไฟล์รูปภาพทุกไฟล์ในไดเรกทอรี "myfiles" มี symlink ในไดเรกทอรี "images"
ดูตัวอย่างของโครงสร้างโฟลเดอร์
/myfiles/a.doc
/myfiles/b.jpg
/myfiles/c.cr2
/myfiles/d.mov
ควรส่งผล
/images/b_800x600.jpg
/images/b_800x600.desc
/images/c_3820x5640.cr2
/images/c_3820x5640.cr2
ls -l
คุณสามารถดูจำนวนฮาร์ดลิงค์ในคอลัมน์ที่สอง
rm
symlink เหล่านั้น dirs และใช้pax -rwl -s "\|.*regex|modifes_filename|" /path/to/myfiles/*.jpg /path/to/jpg_dir
เป็นตัวอย่างเพื่อรับฮาร์ดลิงก์ที่มีชื่อไฟล์ที่เปลี่ยนแปลงโดยทางโปรแกรมสำหรับไฟล์ที่ตรงกับ jpgs ของคุณเท่านั้น คุณสามารถได้รับมากกว่านั้น - เช่นการแบตช์ตามเวลาการเปลี่ยนแปลงและอื่น ๆ
find /myfiles -type f
ไปยังไฟล์จากนั้นใช้find /images -type l -exec readlink {} \; | egrep myfiles
เพื่อรับรายการไฟล์ที่มี symlinked/images
แล้ววนซ้ำผลลัพธ์ที่ทำsed
ในแต่ละรายการเพื่อลบพา ธ ในไฟล์แรกที่คุณบันทึกไว้ มี symlink และไฟล์ที่เหลืออยู่คือไฟล์ที่ไม่มี symlink