ฉันเพิ่งลบทุกอย่างด้วย find -exec mv หรือไม่


26

ฉันพยายามคิดออกเอง นี่คือคำสั่งที่ฉันใช้ใน terminal:

find . -name "*.jpg" -exec mv {} pictures \;

ฉันไม่ได้สร้างไดเรกทอรีชื่อภาพก่อน สิ่งที่เกิดขึ้นคือไฟล์ที่ชื่อว่า pictures.gif ถูกสร้างขึ้น พบไฟล์แล้วเขียนทับไฟล์ขณะย้ายหรือไม่

ไฟล์ pictures.gif นี้เป็นไฟล์อะไรที่สร้างขึ้นจากคำสั่งนี้?

ไฟล์ยังคงอยู่ในไดรฟ์อยู่หรือไม่?


ขออภัยที่เกิดขึ้นกับคุณและฉันหวังว่าคุณจะสามารถกู้คืนสิ่งต่าง ๆ ได้ ประหลาดใจโดย. gif - จะน่าสนใจที่จะรู้ว่าเกิดอะไรขึ้นที่นั่น
SEngstrom

7
หากคุณกำลังเขียนชื่อของไดเรกทอรีผนวก/มัน! เสมอ! จากนั้นจะสามารถเป็นไดเรกทอรีเท่านั้น
การแข่งขัน Lightness กับ Monica

2
เช่นเดียวกับคำตอบยอดนิยมบอกว่า: หยุดใช้ไดรฟ์นั้นทันทีและพยายามกู้คืนไฟล์. jpg ที่ถูกลบไปแล้ว อย่างไรก็ตามสำหรับเรื่องนี้ฉันขอแนะนำPhotoRecแบบโอเพ่นซอร์สและข้ามแพลตฟอร์มซึ่งรู้จักรูปแบบภาพจำนวนมาก (Jpg แต่ยังมีไฟล์ดิบที่แตกต่างกัน ฯลฯ ) และละเอียดมาก
Olivier Dulac

คำตอบ:


45

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

คำสั่งของคุณรันmv pic1.jpg pictures, mv pic2.jpg picturesและอื่น ๆ , การเรียกใช้งานของการmvเขียนทับไฟล์ปัจจุบันแต่ละชื่อpicturesโดยรูปภาพอื่น

การย้ายไฟล์ (ภายในระบบไฟล์เดียวกัน) หมายถึงการลบไฟล์ออกจากไดเร็กทอรีที่มีไฟล์และแนบไฟล์ไปยังไดเร็กทอรีเป้าหมายภายใต้ชื่อใหม่ ดังนั้นจึงไม่มีการแก้ไขหรือลบข้อมูลไฟล์โดยคำสั่งนี้เฉพาะรายการไดเรกทอรีสำหรับรูปภาพที่หายไป

คุณสามารถเรียกใช้เครื่องมือที่ไล่พื้นที่ว่างของระบบไฟล์ของคุณและค้นหาสิ่งที่ดูเหมือน jpegs โชคดีที่ทุกไฟล์ jpeg เริ่มต้นด้วยส่วนหัวที่รู้จัก เครื่องมือที่มีลักษณะสำหรับเนื้อหาที่ถูกลบจะเรียกว่าเครื่องมือแกะสลัก มีบางอย่างในอูบุนตูรวมถึงการกู้คืน jpeg , สำคัญที่สุด , testdisk , ... หากภาพถ่ายอยู่ในพาร์ติชันที่บ้านแยกต่างหากหรือบนไดรฟ์ภายนอกติดตั้งหนึ่งหรือมากกว่าแพคเกจเหล่านั้นและชี้ไปที่พาร์ทิชันที่มีภาพที่ถูกลบ

หากภาพถ่ายอยู่ในดิสก์ระบบของคุณคุณจะต้องหยุดใช้งานระบบของคุณทันที ใช้คอมพิวเตอร์เครื่องอื่นเพื่อดาวน์โหลด live CD หรือ USB และทำการบูทจากนั้น ซีดีที่มีชีวิตใด ๆที่มี testdiskควรพอดีกับใบเรียกเก็บเงิน แต่มีบางอย่างที่ใช้งานง่ายกว่าแผ่นอื่น ๆ System Rescue CDเป็นซีดีกู้ระบบทั่วไปที่ดี Ubuntu Rescue Remixอาจคุ้นเคยกับผู้ใช้ Ubuntu มากกว่า


สำหรับการอ้างอิงในอนาคตใช้เป็นนิสัยในการใช้งานmv -iเว้นแต่ว่าคุณต้องการเขียนทับไฟล์ คุณอาจมีนามแฝงอยู่แล้วmvแต่จะเตะเข้าก็ต่อเมื่อคุณพิมพ์mvโดยตรงบนบรรทัดคำสั่งไม่ใช่เมื่อmvถูกเรียกโดยสคริปต์หรือfindคำสั่ง

$ : >pictures
$ mv -i foo.jpg pictures
mv: overwrite `pictures'?

นอกจากนี้หากคุณใส่ชื่อ/หลังจากที่ควรจะเป็นชื่อของไดเรกทอรีคุณจะได้รับข้อผิดพลาดหากไม่มีไดเรกทอรีหรือหากมีไฟล์ตามชื่อนั้นซึ่งไม่ใช่ไดเรกทอรี

$ : >pictures
$ mv foo.jpg pictures/
mv: cannot move `foo.jpg' to `pictures/': Not a directory
$ rm pictures
$ mv foo.jpg pictures/
mv: cannot move `foo.jpg' to `pictures/': Not a directory

เพื่อหลีกเลี่ยงข้อผิดพลาดของfindคุณสามารถใช้คุณลักษณะการข้ามผ่านไดเรกทอรีซ้ำของ bash แทน คุณต้องเปิดใช้ก่อนด้วยคำสั่งshopt -s globstar(คุณสามารถเพิ่มบรรทัดนี้ในของคุณ~/.bashrcจากนั้น:

mv **/*.jpg pictures/

(โปรดทราบว่าในทุบตี**/สำรวจลิงก์สัญลักษณ์ไปยังไดเรกทอรีและไม่มีวิธีที่จะปิดนี้ถ้าคุณต้องการ traversal ซ้ำที่ไม่มองผ่านลิงก์สัญลักษณ์ไปยังไดเรกทอรีใช้ zsh หรือค้นหา)


1
คุณละเว้นตัวอย่าง/หลังpicturesชุดที่สองหรือไม่ คือไม่ควรจะเป็นmv foo.jpg pictures/(กับ/) ทั้งในmvคำสั่ง?
Paddy Landau

@PaddyLandau แท้จริงนี้คือจริงๆไม่ดีคัดลอกวางหรือแก้ไขความล้มเหลว ขอบคุณสำหรับการรายงาน
Gilles 'หยุดชั่วร้าย'

13

ฉันกลัวว่าคุณได้สูญเสียรูปภาพทั้งหมดของคุณไปเป็นไฟล์เดียว เป็นไปได้ที่จะกู้คืนไฟล์บางไฟล์โดยใช้เครื่องมือทางนิติวิทยาศาสตร์เช่นชั้นแนวหน้า แต่อัตราความสำเร็จจะลดลงเมื่อคุณใช้สื่อ (ดิสก์) นานขึ้น (เพื่อความแม่นยำยิ่งติดตั้งพาร์ติชั่นให้นานขึ้น )

ครั้งต่อไปเมื่อคุณหมายถึงไดเรกทอรีให้เพิ่มเครื่องหมายทับและเพิ่ม-iตัวเลือกเพื่อขอการยืนยันในกรณีที่ไฟล์มีอยู่แล้ว:

find -name "*.jpg" -exec mv -i {} pictures/ {} \;

6
ใช่ฉันต้องเน้นอีกครั้ง: เข้าสู่สภาพแวดล้อมซีดีสดทันที! หากคุณต้องการไฟล์เหล่านี้กลับมาคุณต้องหยุดใช้งานไดรฟ์ทันที และถ้าคุณต้องการดาวน์โหลดและเบิร์นรูปภาพให้ทำจากคอมพิวเตอร์เครื่องอื่น กิจกรรมที่น้อยลงที่เกิดขึ้นบนดิสก์นี้มีโอกาสมากขึ้นที่ภาพถ่ายของคุณจะถูกกู้คืน
Oli

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