cat ./* >> Large.txt サイズの縮小

cat ./* >> Large.txt サイズの縮小

私は初めてbashスクリプトに触れました。異なるディレクトリにある多くのファイルを1つの大きなファイルにリンクするスクリプトを作成しました。

#!/bin/bash
for f in foo/$1/*; do
    if [ -d "$f" ]; then
        for d in $f/*; do
                if [ -d "$d" ]; then
                file=$( echo ${d##*/} )
                mkdir -p bar/$1/"$file"/fastq/
                cat $d/*/fastq_pass/* >> bar/$1/"$file"/fastq/$file.fastq.gz
                        fi
                done
    fi
done

マージされたファイルの一部に1〜2 GBのサイズがないことがわかりましたが、他のファイルは問題ありませんでした。私がしようとしているとき

cat foo/* >> bar/largefile.fastq.gz

損失は​​ありません。確かに私の台本のせいです。間違いはどこにありますか?

ベストアンサー1

効率を向上させるために、ファイルシステムはブロッククラスタの形式でディスクスペースを割り当てます。したがって、「1バイト」ファイルはクラスタ全体に割り当てられます。 100個の「1バイト」ファイルをリンクして100バイトのデータを生成するには、まだ1つのクラスタが必要です。

クラスターとブロックサイズはさまざまで、パフォーマンス分析には特定のアプリケーション最適化専用のサブフィールドがあります。

おすすめ記事