ファイルパスが与えられたら、そのファイルのすべてのコピーを見つける方法は?

ファイルパスが与えられたら、そのファイルのすべてのコピーを見つける方法は?

rdfind私は、または同じプログラムを知っていますfdupes。似ていますが、より複雑な問題を解決します。

ファイルパスとディレクトリが与えられたら、ディレクトリを再帰的に検索して、他の名前、権限、または所有権に関係なく、ファイルのすべてのコピーを見つけたいと思います。

rdfind needle.file haystack/たとえば、これを行うneedle.filehaystack

出力をフィルタリングできますが、出力が大きいとrdfind不要haystack/な操作がたくさん発生します。

scripts/cron-jobで使用する予定なので、コマンドラインアプリケーションが必要です。

ベストアンサー1

簡単な方法:

  • ターゲットファイルをインポートしてmd5sum変数に保存
  • ファイルサイズを取得して変数に保存します。
  • 同じサイズのすべてのファイルでfind実行md5sum
  • grepfind目標MD5ハッシュ値の出力
target_hash=$(md5sum needle.file | awk '{ print $1 }')
target_size=$(du -b needle.file | awk '{ print $1 }')
find haystack/ -type f -size "$target_size"c -exec md5sum {} \; | grep $target_hash

おすすめ記事