ディレクトリ内の各.fastqファイルに対して個別の.md5ファイルを生成しようとしています。多くのファイルに対して単一の.md5ファイルを生成するソリューションを見つけましたが、これは私が探しているものではありません。
file1.fastq
、file2.fastq
、file3.fastq
があり、file1.md5
、file2.md5
、file3.md5
を生成したい。
FORループでうまくいくと思いますが、私はプログラマーではなく、この問題の解決策を見つけられないようです。
また、次のコードも試しました。
find . -type f -name "*.fastq.gz" -exec sh -c "md5sum < {} > {}.md5" \;
各.fastqファイルに対して.md5ファイルが正しく生成されますが、.md5ファイルの内容は正しくありません。つまり、64399513b7d734ca90181b27a62134dc -
が返されます
64399513b7d734ca90181b27a62134dc testfile.fastq
の代わりに
誰でも助けることができますか?
最も単純なケースは次のとおりです。
for file in *fastq; do md5sum "$file" > "$file".md5; done
ただし、それはfile1.fastq.md5
のようなファイル名を作成します。拡張機能はここでは基本的に無関係なので、それは問題ではありませんが、file1.md5
を希望する場合は代わりにこれを実行してください。
for file in *fastq; do md5sum "$file" > "${file//.fastq}".md5; done
また、md5sum
コマンドはファイル名を出力しません。これは、各ファイルが<
リダイレクトのためにシェルから読み取られ、md5sum
が元のファイル名を認識できないためです。ファイルのコンテンツを直接。
したがって、現在の作業ディレクトリ内のすべてのファイルを再帰的に処理する場合は、代わりに次のコマンドを使用できます。
find . -type f -name "*.fastq.gz" -exec sh -c "md5sum {} > {}.md5" \;