ディレクトリ内の各ファイルに対して個別の.md5ファイルを生成しますが、既存のファイルはスキップします。

ディレクトリ内の各ファイルに対して個別の.md5ファイルを生成しますが、既存のファイルはスキップします。

4TB の何百万ものファイルがあります。ファイルごとに 1 つの .md5 を作成できれば便利だと思います。

私は読む ディレクトリ内の各 .fastq ファイルに対して個別の .md5 ファイルを生成しますか? 各ファイルごとに個別の .md5 を生成するように変更されました。

次のようにします: find . -type f -name "*" -exec sh -c "md5sum {} > {}.md5" \;

しかし、前述したように、4TB の何百万ものファイルを取得しているため、コマンドは 2 日以内に完了しない可能性があり、PC をシャットダウンする必要があります。

再開時に、上記のコマンドで、既に .md5 ファイルが存在するファイル (つまり、計算されたファイル) をスキップできればと思います。

これをどうやって行うのでしょうか? もちろん、再帰的に行います。

ありがとう。

答え1

.md5ファイルごとに 1 つのファイル (「数百万のファイル」) を作成し、数百万のディスク クラスターと数百万の i ノードを使用するのではなく、.md5すべてのファイルの署名を 1 つの大きなファイル (必要に応じて後で分割できます) に格納します (読み取りman find;man xargs):

find . -type f \! -name '*.md5' -print0 | xargs -0 md5sum > md5sum.out
#   Separate filenames with \000^^^^^^^          ^ in case some have spaces
#              ^^^^^^^^^^^^^^^^ but NOT *.md5 files
#      ^^^^^^^ each file

関連情報