Sadece her şeyi find -exec mv ile mi sildim?


26

Bunu kendi başıma çözmeye çalıştım. İşte terminalde kullandığım komut:

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

Önce resimler adında bir dizin oluşturmadım. Olan, pictures.gif adlı bir dosya oluşturuldu. Dosyaları bulup, üzerine taşırken üzerine yazdı mı?

Bu komutun sonucu olarak oluşturulan bu pictures.gif dosyası nedir?

Dosyalar hala sürücüde bir yerde mi?


Üzgünüm bu sana oldu ve umarım bir şeyleri geri kazanabilirsin .Gif tarafından gizemli - orada ne olduğunu bilmek ilginç olurdu.
SEVstrom

7
Bir dizinin adını yazıyorsanız, buna ekleyin /! Her zaman! O zaman sadece bir dizin olabilir.
Monica ile Hafiflik Yarışları

2
En iyi cevabın dediği gibi: bu sürücüyü şimdi kullanmayı bırakın ve silinen .jpg dosyalarını kurtarmayı deneyin. Bununla birlikte, birçok görüntü formatını (Jpg, aynı zamanda farklı raw dosyaları vb.) Bilen ve çok kapsamlı olan açık kaynaklı ve çapraz platformlu PhotoRec'i de tavsiye ederim .
Olivier Dulac

Yanıtlar:


45

İlk önce: şimdi bu sürücüyü kullanmayı bırakın . Tamamen salt okunur bir şekilde yeniden yazmanız yeterlidir, sadece daha fazla yazı yazmadığınızdan emin olun. Evet, resimleri sildiniz. Onlar olabilir kurtarılabilir, ama daha o sürücüyü, bir şey kurtarmak zorunda az şans kullanmaya devam.

Sizin komut ran mv pic1.jpg pictures, mv pic2.jpg picturesait vb Her çağırma mvoverwrote dosya şu anda adında picturesbaşka resim tarafından.

Bir dosyayı taşımak (aynı dosya sistemi içinde), onu içeren dizinden çıkarmak ve yeni adın altındaki hedef dizine eklemek anlamına gelir. Bu nedenle, bu komut tarafından hiçbir dosya verisi değiştirilmedi veya silinmedi, yalnızca kaybolan görüntüler için dizin girdileri.

Dosya sisteminizin boş alanını tarayan ve jpeg gibi görünen şeyleri arayan bir araç çalıştırabilirsiniz. Neyse ki, her jpeg dosyası tanınabilir bir başlıkla başlar. Silinen içeriği arayan araçlara oyma araçları denir . Birkaç dahil Ubuntu vardır recoverjpeg , başta , TestDisk'i fotoğraflar ayrı ev bölümünde veya harici sürücüde ise, ..., birini yükleyin veya daha fazla olanlar paketlerin ve silinen resimleri ile bölüm na yönlendirmek.

Fotoğraflar sistem diskindeyse, sisteminizi derhal kullanmayı bırakmanız gerekir. Canlı bir CD veya USB indirmek ve önyüklemek için başka bir bilgisayarı kullanın. Testdisk içeren canlı CD'lerin herhangi biri tasarıya sığmalıdır, ancak bazıları diğerlerinden daha kolaydır. Sistem Kurtarma CD'si , genel amaçlı iyi bir sistem kurtarma CD'sidir. Ubuntu Rescue Remix , bir Ubuntu kullanıcısı için daha aşina olabilir.


Gelecekte mv -ibaşvurmak için, dosyaların üzerine yazmak istemediğiniz sürece kullanma alışkanlığı edinin . İçin zaten bir takma adınız olabilir mv, ancak bu yalnızca bir komut dosyası veya komut tarafından başlatıldığında mvdoğrudan komut satırına yazdığınızda başlar .mvfind

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

Ayrıca, /bir dizinin adı olması gereken bir adın arkasına koyarsanız , dizin yoksa veya dizinde olmayan bir dosya varsa hata alırsınız.

$ : >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

Tuzaklardan kaçınmak için find, bunun yerine bash'ın özyinelemeli dizin gezinme özelliğini kullanabilirsiniz. Önce komutu ile açmanız gerekir shopt -s globstar(bu satırı kendi dizinize ekleyebilirsiniz ~/.bashrc. Sonra:

mv **/*.jpg pictures/

(Bash'te **/ayrıca dizinlerin sembolik bağlantılarını geçtiğini ve bu dizini kapatmak için bir yol bulunmadığını unutmayın. Dizinlere sembolik bağlantılardan bakmayan bir özyinelemeli geçiş istiyorsanız, zsh kullanın veya bulun.)


1
İkinci örneklemde /sonrasını atladınız picturesmı? Yani, her iki komutta da mv foo.jpg pictures/(ile /) olmamalı mvmı?
Paddy Landau

@PaddyLandau Gerçekten, bu gerçekten kötü bir kopyala yapıştır veya düzenleme hatasıydı . Rapor için teşekkürler.
Gilles 'SO- kötülük'

13

Korkarım ki tüm resimlerinizi o tek dosyada kaybettiniz. En başta olduğu gibi adli araçları kullanarak bazı dosyaları kurtarmak mümkündür , ancak medya (disk) kullandıkça başarı oranı düşer. (Kesin olarak, bölme ne kadar uzun monte edilmişse .)

Bir dahaki sefere, bir dizini kastettiğinizde, bir eğik çizgi ekleyiniz ve -ibir dosyanın zaten mevcut olması durumunda onay isteme seçeneğini de ekleyiniz :

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

6
Evet tekrar vurgulamak zorundayım: HEMEN CANLI bir CD ÇEVRE ALIN! Bu dosyaları geri istiyorsanız, sürücüyü şimdi kullanmayı bırakmanız gerekir. Bir görüntüyü indirmeniz ve yakmanız gerekirse, başka bir bilgisayardan yapın. Bu diskte ne kadar az etkinlik olursa, fotoğraflarınızın geri yüklenme olasılığı o kadar artar.
Oli

Bunun için teşekkürler. İlk önce cevabınızı gördüm ve hemen makinedeki fişi çektim ve çoklu önyüklemeli USB kurtarma diskimle yeniden başlattım.
jtnewhou
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.