ディレクトリ内のすべてのファイルの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
を追加する代わりに置き換えるために使用されます。