Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何获取文件列表占用的总磁盘空间_Linux_Bash_Shell - Fatal编程技术网

Linux 如何获取文件列表占用的总磁盘空间

Linux 如何获取文件列表占用的总磁盘空间,linux,bash,shell,Linux,Bash,Shell,我有大约1000个非常大的文件(每个都超过5GB)。这些文件有.bam.cram、.fastq.gz、.fq扩展名(我不知道)。我只是有这些清单,比如 list.txt: A-ADC-AD000856 A-ADC-AD000884 A-ADC-AD000910 A-ADC-AD000937 A-ADC-AD000946 它们也可以有其他文件格式: A-ADC-AD000856.bam A-ADC-AD000856.gvcf.gz A-ADC-AD000856.vcf A-ADC-AD00088

我有大约1000个非常大的文件(每个都超过5GB)。这些文件有.bam.cram、.fastq.gz、.fq扩展名(我不知道)。我只是有这些清单,比如

list.txt:

A-ADC-AD000856
A-ADC-AD000884
A-ADC-AD000910
A-ADC-AD000937
A-ADC-AD000946
它们也可以有其他文件格式:

A-ADC-AD000856.bam
A-ADC-AD000856.gvcf.gz
A-ADC-AD000856.vcf
A-ADC-AD000884.cram
A-ADC-AD000884.vcf
A-ADC-AD000910.bam
A-ADC-AD000910.g.vcf
A-ADC-AD000937.fq
A-ADC-AD000946.fastq.gz
A-ADC-AD000946.vcf
我试着用下面这样的方法来定位,但是有没有更好的方法来获取这些文件的总大小(GB)

TotalSize={}
for line in `cat list.txt`; do
GetFile="$(locate $line | egrep "bam|cram|fastq|fastq.gz|fq.gz|fq")"
size="$(wc -c $GetFile)"
TotalSize=$(($size+$TotalSize))
done

我最后做了这样的事情:

for line in `cat list.txt`; do
# echo "Doing file: $line"
GetFile="$(locate $line | egrep 'bam|cram|fastq|fastq.gz|fq.gz|fq')"
size="$(du -ch $GetFile | tail -1 | cut -f 1)"
echo "$GetFile,$size" >> "/total_files.txt"
done

然后我可以将电子表格上的值相加。

文件在哪里?它们是否都在同一个目录中,或者分散在整个文件系统中,或者介于两者之间?@GordonDavisson不,它们在不同的目录中。不知道确切位置。
stat
du
wc-c
使用
stat--printf“%n,%s\n”“$GetFile”
而不是
du-ch$GetFile | tail-1 | cut-f1
。。。并直接重定向到“/total_files.txt”。。。