web-dev-qa-db-ja.com

ディレクトリとそのサブディレクトリ内のすべてのファイルのMd5sumを再帰的に一覧表示するにはどうすればよいですか?

ディレクトリ内のすべてのファイルのMd5チェックサムをリスト(および保存)し、そのリストをmd5sum.txtというテキストファイルに保存したい

できたらいいですね

  • treeコマンド内に統合します(フォルダーとファイルのツリー構造を作成します)
  • フォルダとサブフォルダで動作するようにします(これはちょっと重要です)
8
Sumeet Deshmukh

find(ディレクトリ内)を使用できます

find -type f -exec md5sum '{}' \; > md5sum.txt

md5sum.txtファイル自体を除外する場合は、次のようにします。

find -type f \( -not -name "md5sum.txt" \) -exec md5sum '{}' \; > md5sum.txt

ループを使用することもできます:再帰的なグロビングをオンにします

shopt -s globstar

次に、ディレクトリで:

for i in **; do [[ -f "$i" ]] && md5sum "$i" >> md5sum.txt; done

このファイルからファイル自体を除外することもできます。

for i in **; do 
  [[ -f "$i" ]] && 
  [[ md5sum.txt != "$i" ]] && 
  md5sum "$i" >> md5sum.txt
done

どちらもtreeのような構造を生成しません。ただし、開始ディレクトリからファイルへの相対パスを出力します。絶対パスが必要な場合は、find /path/to/directory ...を使用します

後でグロブスターをオフにすることもできます(shopt -u globstar

22
Zanna

次のコマンドを実行できます。

md5sum /path/to/directory/* > /path_to_result/md5sum.txt

結果ファイルの出力は次のようになります。

46684e3891d990acde2e723ee3d4e94a  /var/log/alternatives.log
39cf1ebf93452ed5f8b240b35ae73f9f  /var/log/alternatives.log.1
aa6c09c411d1d0870bca5f401d589332  /var/log/alternatives.log.2.gz
1
Yaron