#author("2018-12-11T07:01:25+09:00","","")
#navi(../)
* 指定したディレクトリ配下のファイルのチェックサムを取得する方法 [#a58cedb6]
findコマンド、xargsコマンドとチェックサムコマンドを使って、~
指定したディレクトリ配下に存在するファイルのチェックサムを取得するコマンド例を以下に記します。

#htmlinsertpcsp(linux_ads_top.html,linux-sp.html)
#contents


* 関連記事 [#e0731cbc]
-[[findでファイルのみ、ディレクトリのみの一覧を取得する>逆引きUNIXコマンド/findでファイルのみ、ディレクトリのみの一覧を取得する]]


* find, xargs, チェックサムコマンドを使って取得 [#p811d26c]
以下の構文のようにすれば、指定したディレクトリ配下のチェックサムを一気に取得することができます。
 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

* 出力の加工 [#l8edf5b7]
以下、出力を加工する実行例を幾つか紹介します。

** 左右入れ替える [#q586a714]
出力されたフォーマットが チェックサム値、ファイル名なので左右入替えたい場合は、~
以下のようすれば簡単に入れ替えることができます。~
*** sedを使う [#hbfbf8d6]
 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を使う [#i07f4f9e]
 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に変換する [#f9282e6a]
出力をCSVに変換する場合は、以下のようにすれば実現できます。
*** awkを使う [#je3f5991]
 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, チェックサムコマンドをつかって一気にチェックサム値を取得する方法でした。

#htmlinsertpcsp(linux_ads_btm.html,linux-sp.html)


トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS