ディレクトリ内のファイルの合計サイズを見つける方法

ディレクトリ内のファイルの合計サイズを見つける方法

directory1だからdirectory2。しかし、私のコードによると、これはディレクトリ内の1つのファイルに対してのみ行われます。複数のファイルで動作させるにはどうすればよいですか?以下のコードで問題が見つかりました。

#!/bin/bash
dir1=$1
dir2=$2

echo Files that are included only in directory1 and not in directory2
diff $dir1 $dir2 | egrep $dir1 | wc -l
diff $dir1 $dir2 | egrep $dir1 
files=$(diff $dir1 $dir2 |egrep $dir1 |awk '{print $4}')
ls -l ./$dir1/$files | awk '{t+=$5}END{print t}'

ベストアンサー1

最高の用途du

du -s directoryすべてのファイルとサブディレクトリで使用されているサイズを報告します。を使用してdu除外リストを提供できるので、あなたの場合、この除外リストはを使用して簡単に取得できる--exclude-fromファイル名になります。ファイルが必要ですが、実際のファイルを作成する必要はなく、「プロセスの置き換え」を使用できます。一緒に入れてください:dir2basename -a dir2/*--exclude-from

du --exclude-from <(basename -a dir2/*) -s dir1 

サイズをバイト、KB、または MB 単位で報告するオプションがあり、ディスク使用量 (既定値) またはレポートのサイズ (スパスファイルの場合は異なる) を報告するようにdu要求することもできます。ls

たとえば、次のように起動します。

├── dir1
│   ├── file1
│   ├── file2
│   ├── file3
│   ├── file4
│   └── file5
└── dir2
    ├── file5
    └── file6

du -c dir1/*レポート:

10240   dir1/file1
10240   dir1/file2
10240   dir1/file3
10240   dir1/file4
51200   dir1/file5
92160   total

除外されたdir2ファイルは除外されるため、file5サイズを50 MB減らす必要があります。

> du --exclude-from <(basename -a dir2/*) -s dir1
40964   dir1

おすすめ記事