【问题标题】:du --exclude-from cannot excludedu --exclude-from 不能排除
【发布时间】:2020-08-19 12:21:37
【问题描述】:

我有一个文件(名为 excl.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 最初是手动创建的(通过逐行输入并按回车键),然后使用以下命令以空术语替换换行符

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

发生了什么事?

【问题讨论】:

  • ls /data |grep -v tsv 的输出是什么
  • 另一种查看发生情况的方法是使用以下命令du -csh --exclude-from=excl.txt /data/*
  • and then the following command used so that the null term to replace the newlines 为什么?干什么用的?

标签: bash du


【解决方案1】:

发生了什么事?

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

用换行符替换零。

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

mapfile -d '' -t arr < excl.txt
for i in "${arr[@]}"; do
     args+=(--exclude="$i")
done
du -csg "${args[@]}" /data

【讨论】:

    【解决方案2】:

    现在似乎可以工作了。只是在所有行的末尾添加了 *

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-12
      • 1970-01-01
      • 1970-01-01
      • 2012-02-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多