Bash du——从中排除不能排除

Bash du——从中排除不能排除,bash,du,Bash,Du,我有一个文件(名为exc.txt),其字符串以null结尾,如下所示: /data/folder1 /data/folder2 /data/*.tsv ... 为了计算/data文件夹的大小(不包括上述文件中的模式),我使用以下命令: du -csh --exclude-from=excl.txt /data 但它不起作用: du -csh --exclude-from=excl.txt /data 552G /data 552G total du -csh /data 552

我有一个文件(名为exc.txt),其字符串以null结尾,如下所示:

/data/folder1
/data/folder2
/data/*.tsv
...
为了计算/data文件夹的大小(不包括上述文件中的模式),我使用以下命令:

du -csh --exclude-from=excl.txt /data
但它不起作用:

du -csh --exclude-from=excl.txt /data
552G    /data
552G    total

du -csh /data
552G    /data
552G    total
excl.txt最初是手动创建的(通过逐个输入行并按enter键),然后使用以下命令,以便使用空项替换换行符

cat excl_init.txt | tr '\n' '\0' > excl.txt

发生了什么事?

现在似乎起作用了。刚刚在所有行的末尾添加了*

发生了什么事

您传递了一个零分隔的文件,而
du
需要一个换行分隔的文件

用换行符替换零

或者,如果确实需要,请使用
--exclude
选项正确传递表达式

mapfile -d '' -t arr < excl.txt
for i in "${arr[@]}"; do
     args+=(--exclude="$i")
done
du -csg "${args[@]}" /data
mapfile-d'-t arr
ls/data | grep-v tsv的输出是什么另一种查看情况的方法是使用以下命令
du-csh--exclude from=excl.txt/data/*
,然后使用以下命令以空项替换换行
为什么?为何