今日、md5 ハッシュを使用して、重複ファイルを削除する Bash スクリプトを作成する必要がありました。これらのハッシュをファイルとして一時ディレクトリに保存しました。
for i in * ; do
hash=$(md5sum /tmp/msg | cut -d " " -f1) ;
if [ -f /tmp/hashes/$hash ] ;
then
echo "Deleted $i" ;
mv $i /tmp/deleted ;
else
touch /tmp/hashes/$hash ;
fi ;
done
それは完璧に機能しましたが、疑問に思いました: それは時間効率の良い方法ですか? 最初はMD5ハッシュをファイルに保存することを考えていましたが、「いいえ、このファイルに特定のMD5が含まれているかどうかを確認するには、毎回完全に再読み取りする必要があるため」と考えました。さて、「ディレクトリにファイルを作成する」方法を使用する場合も同じですか?同じディレクトリに多数のファイルがある場合、Bash [ -f ] は線形または準一定の複雑さをチェックしますか?
ファイルシステムに依存する場合、tmpfs の複雑さは何ですか?