find -exec mvですべてを削除しましたか?


26

私は自分でこれを理解しようとしました。ターミナルで使用したコマンドは次のとおりです。

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

最初にpicturesという名前のディレクトリを作成しませんでした。発生したのは、pictures.gifという名前のファイルが作成されたことです。ファイルを見つけて、移動したときに上書きしましたか?

このコマンドの結果として作成されたこのpictures.gifファイルは何ですか?

ファイルはまだドライブのどこかに残っていますか?


申し訳ありませんが、それはあなたに起こりました。.gifに謎めいた-何がそこで起こったのかを知るのは興味深いでしょう。
SEngstrom

7
ディレクトリの名前を書いている場合は、/それに追加してください!常に!その後、ディレクトリになることしかできません。
モニカとの軽さレース

2
トップの答えが言うように:今そのドライブの使用を停止し、削除された.jpgファイルを回復しようとします。ただし、このためには、多くの画像形式(Jpg、異なるRAWファイルなど)を知っており、非常に徹底的なオープンソースでクロスプラットフォームのPhotoRecをお勧めします。
オリビエデュラック

回答:


45

最初:このドライブの使用を今すぐ停止します。読み取り専用で再マウントしてもかまいません。書き込みを行わないようにしてください。はい、写真を削除しました。それら回復可能かもしれませんが、そのドライブを使い続けるほど、何かを回復する必要が少なくなります。

コマンドはmv pic1.jpg picturesmv pic2.jpg picturesなどを実行しました。それぞれの呼び出しはmv、現在pictures別の画像で指定されているファイルを上書きしました。

ファイルを(同じファイルシステム内で)移動するとは、そのファイルを含むディレクトリからファイルを切り離し、新しい名前でターゲットディレクトリに添付することを意味します。したがって、このコマンドによって変更または削除されたファイルデータはなく、消失したイメージのディレクトリエントリのみです。

ファイルシステムの空き領域を探し出し、jpegのように見えるものを探すツールを実行できます。幸いなことに、すべてのjpegファイルは認識可能なヘッダーで始まります。削除されたコンテンツを探すツールは、カービングツールと呼ばれます。いくつかはUbuntuのであり、を含むrecoverjpeg何よりもTestDiskは写真が別のホームパーティションまたは外部ドライブ上にある場合、...、これらのパッケージの一つ以上をインストールし、削除された写真でパーティションにそれらを指しています。

写真がシステムディスクにある場合は、すぐにシステムの使用を停止する必要があります。別のコンピューターを使用してライブCDまたはUSBをダウンロードし、そこから起動します。testdiskを含むライブCDのどれもが法案に合うはずですが、一部は他のものより使いやすいです。System Rescue CDは、優れた汎用システムレスキューCDです。Ubuntu Rescue Remixは、Ubuntuユーザーにとっては使い慣れたものかもしれません。


将来の参考のために、mv -iファイルを上書きすることを目的としない限り、使用する習慣を身に付けてください。既にのエイリアスを持っているかもしれませんが、スクリプトやコマンドによって呼び出されたときではなく、コマンドラインで直接mv入力したときにのみ有効になります。mvmvfind

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

(bashでは、**/ディレクトリへのシンボリックリンクもトラバースすることに注意してください。これをオフにする方法はありません。ディレクトリへのシンボリックリンクを調べない再帰トラバーサルが必要な場合は、zshまたはfindを使用してください。)


1
例の2番目のセットで/after を省略しpicturesましたか?すなわち、両方のコマンドでmv foo.jpg pictures/(で/)すべきではありませんmvか?
水田ランダウ

@PaddyLandau確かに、これは本当に悪いコピー/ペーストまたは編集の失敗でした。報告いただきありがとうございます。
ジル 'SO-悪であるのをやめる'

13

私はあなたがあなたの写真をすべてそのファイルに失ったのではないかと心配しています。何よりもまず、フォレンジックツールを使用して一部のファイルを回復することは可能ですが、メディア(ディスク)を使用する時間が長くなるほど成功率は低下します。(正確には、パーティションがより長くマウントされます。)

次回、ディレクトリを意味する場合は、そのディレクトリにスラッシュを追加し-i、ファイルが既に存在する場合に確認を求めるオプションを追加します。

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

6
ええ、私は再強調する必要があります:すぐにライブCD環境に入ろう!これらのファイルを元に戻したい場合は、ここでドライブの使用を停止する必要があります。また、イメージをダウンロードして書き込む必要がある場合は、別のコンピューターから実行してください。このディスクで発生するアクティビティが少ないほど、写真が復元される可能性が高くなります。
オリ

これをありがとう。最初にあなたの答えを見て、すぐにマシンのプラグを抜いて、マルチブートUSBレスキューディスクで再起動しました。
-jtnewhou
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.