このエントリーをはてなブックマークに追加


指定したディレクトリ配下のファイルのチェックサムを取得する方法

findコマンド、xargsコマンドとチェックサムコマンドを使って、
指定したディレクトリ配下に存在するファイルのチェックサムを取得するコマンド例を以下に記します。


関連記事

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
<省略>
  • md5sum
    find ディレクトリ -type f | xargs md5sum
  • sha1sum
    find ディレクトリ -type f | xargs sha1sum
  • sha256sum
    find ディレクトリ -type f | xargs sha256sum

出力の加工

以下、出力を加工する実行例を幾つか紹介します。

左右入れ替える

出力されたフォーマットが チェックサム値、ファイル名なので左右入替えたい場合は、
以下のようすれば簡単に入れ替えることができます。

sedを使う

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
<省略>

awkを使う

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に変換する

出力をCSVに変換する場合は、以下のようにすれば実現できます。

awkを使う

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, チェックサムコマンドをつかって一気にチェックサム値を取得する方法でした。



トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-12-11 (火) 07:01:25