ディレクトリ内のすべての* .txtファイルの並列md5sum

ディレクトリ内のすべての* .txtファイルの並列md5sum

ディレクトリ内のすべてのファイルのmd5ハッシュを計算し、各ファイルを同じファイル名で*.txt保存しますが、拡張子を 。.txt.md5

ファイルの場合:foo.txt ファイルを生成したい:foo.md5 内容:

9fa74bee342222aadd999b2e8b2bef62 *foo.txt

以下のコマンドを使用して必要なファイルを取得しましたが、より短い選択肢があるかどうか、または少なくとも1つまたは2つのawkコマンドを削除する方法があるかどうか疑問に思います。

time find *.txt | parallel md5sum | awk '{ print $1, $2, $2 }' | awk '{$1 $2 $3 > gsub(".txt", ".md5", $3); print}' | awk '{ print $1, "*"$2 > $3 }'

私はいくつかの選択肢を見つけましたが、並列性を使わずにファイル名を変更する代わりに、.md5をファイル名に追加します。そしてmd5ハッシュだけを保存するので、*filename修正が必要です。

ベストアンサー1

関数を作成して実行しますparallel

_md5(){
  md5sum -b "$1" > "$1.md5"
}
export -f _md5

parallel -j8 _md5 ::: *.txt

"${1%.*}".md5拡張子md5を追加する代わりに置き換えるために使用されます。

おすすめ記事