このコマンドを使用して再帰的に生成しています。SHA-512ハッシュディレクトリ階層の各ファイルに対して、次の操作を行います。
find . -type f -exec openssl sha512 {} \;
ハッシュを生成する前に、ファイルをアルファベット順にソートしたいと思います。
次のように使用できますsort
。
find . -type f | sort
しかし、ソートされたファイルのリストをopenssl
。
find . -type f | sort | openssl sha512
しかし、これは出力全体の単一のハッシュを生成しますsort
が、私は各個々のファイルのハッシュを望んでいます。
find
いくつかのbashのバージョンにはオプション-s
("find
アルファベット順にナビゲートされたファイル階層が発生")が含まれていますが、私のfind
。
助けてくれてありがとう!
答え1
xargs
あなたが望むものを得るためにそれを使用することができます。
find . -type f -print0 | sort -z | xargs -0 -n1 openssl sha512
この-n1
オプションは、xargsにコマンドに1つの引数のみを許可するように指示しますopenssl
。-print0
およびオプションは、ファイル名に「問題」文字(挿入された改行文字など)が含まれていると-z
パイプが壊れるのを防ぎます。-0
答え2
次のように、xargs -L 1 openssl sha512にパイプします。
find . -type f | sort | xargs -L 1 openssl sha512
xargsは出力を取得し、プログラムのコマンドラインとして実行します。 「-L 1」は一度に1行に制限します。