findコマンド、xargsコマンドとチェックサムコマンドを使って、
指定したディレクトリ配下に存在するファイルのチェックサムを取得するコマンド例を以下に記します。
以下の構文のようにすれば、指定したディレクトリ配下のチェックサムを一気に取得することができます。
find 対象ディレクトリ -type f | xargs チェックサムコマンド
実際には、以下のようになります。
以下のコマンド例では、/etcディレクトリを指定し、md5sumを実行しています。
# find /etc/ -type f | xargs md5sum 3917c4d65b30bd9636086f9a0c6bfd13 /etc/cron.d/popularity-contest e6fa2d74078ac0ac6fd730decf3b3736 /etc/cron.d/php e5e12910bf011222160404d7bdb824f2 /etc/cron.d/.placeholder 0d523b6896875a27a7b4329e75091df9 /etc/cron.d/anacron 6945cded2bf5630e953a5a12aaca5232 /etc/manpath.config 9d5ee34149287021622dd9e21c17ec26 /etc/profile 17d90fe8266719f45ad0e8879a05ca17 /etc/modules-load.d/cups-filters.conf a81b3f1cb197219b815942f4fc7fa94e /etc/bash_completion 58ebf76f11386308d7f2ddee09b3cf96 /etc/kerneloops.conf 912bafce89008ac5eb740714808d66fa /etc/fstab <省略>
find ディレクトリ -type f | xargs md5sum
find ディレクトリ -type f | xargs sha1sum
find ディレクトリ -type f | xargs sha256sum
以下、出力を加工する実行例を幾つか紹介します。
出力されたフォーマットが チェックサム値、ファイル名なので左右入替えたい場合は、
以下のようすれば簡単に入れ替えることができます。
find ディレクトリ -type f | xargs sha256sum | sed 's/\(.*\) \(.*\)/\2 \1/g'
# find /etc/ -type f | xargs sha256sum | sed 's/\(.*\) \(.*\)/\2 \1/g' |head -5 /etc/cron.d/popularity-contest 1b33c06b80cb929d4e36ea3fe0883088d4ac64fc663d0947d3c83b082bf2541c /etc/cron.d/php cde3e914bfaf28862ca4a00bdf972a7ebe57676c895df86e7a5f105fb59155c7 /etc/cron.d/.placeholder 49674d9b1bd433cdb58f30497f6c441dc823de549160eef5c1acec4c20786810 /etc/cron.d/anacron 9f08379d0a55b91131dcee372f6a96452100ee194add9fa2fd078dafb7d1353c /etc/manpath.config 32b6b4a360458052b9fe0271387c762dcdb9c82df28e33d733030db4f2480bba <省略>
find ディレクトリ -type f | xargs sha256sum | awk '{ print $2, $1 }'
# find /etc/ -type f | xargs sha256sum | awk '{ print $2, $1 }' /etc/cron.d/popularity-contest 1b33c06b80cb929d4e36ea3fe0883088d4ac64fc663d0947d3c83b082bf2541c /etc/cron.d/php cde3e914bfaf28862ca4a00bdf972a7ebe57676c895df86e7a5f105fb59155c7 /etc/cron.d/.placeholder 49674d9b1bd433cdb58f30497f6c441dc823de549160eef5c1acec4c20786810 /etc/cron.d/anacron 9f08379d0a55b91131dcee372f6a96452100ee194add9fa2fd078dafb7d1353c /etc/manpath.config 32b6b4a360458052b9fe0271387c762dcdb9c82df28e33d733030db4f2480bba <省略>
出力をCSVに変換する場合は、以下のようにすれば実現できます。
find ディレクトリ -type f | xargs sha256sum | awk '{ print $1","$2 }'
# find /etc/ -type f | xargs sha256sum | awk '{ print $1","$2 }' 1b33c06b80cb929d4e36ea3fe0883088d4ac64fc663d0947d3c83b082bf2541c,/etc/cron.d/popularity-contest cde3e914bfaf28862ca4a00bdf972a7ebe57676c895df86e7a5f105fb59155c7,/etc/cron.d/php 49674d9b1bd433cdb58f30497f6c441dc823de549160eef5c1acec4c20786810,/etc/cron.d/.placeholder 9f08379d0a55b91131dcee372f6a96452100ee194add9fa2fd078dafb7d1353c,/etc/cron.d/anacron 32b6b4a360458052b9fe0271387c762dcdb9c82df28e33d733030db4f2480bba,/etc/manpath.config <省略>
以上、find, xargs, チェックサムコマンドをつかって一気にチェックサム値を取得する方法でした。