构建查找目录中所有文件的 UNIX 管道(使用 find、xargs 和 du 命令)

Constructing a UNIX pipeline that finds all files in a directory (using find ,xargs and du commands )

我需要构建一个 UNIX 管道来查找包含单词 "english" 的目录下的所有文件(使用 find 命令)并计算每个文件的大小并对它们进行排序。 这是我的实现,我收到断言错误,任何输入将不胜感激

find /usr/share/dict -type f -name "english*"| xargs -n 1 du | sort -n

错误信息是

E           AssertionError: assert 44 == 2
E        +  where 44 = len(['4\t./.git/branches\r', '4\t./.git/objects/info\r', '4\t./.git/objects/pack\r', '4\t./.git/refs/tags\r', '8\t./.cache/v/cache\r', '8\t./.git/info\r', ...])

两个错误:

  1. 文件可以包含 "spaces" - 用户 print0

  2. 必须是文件。使用 -type f

find /usr/share/dict -type f -name "english*" -print0| xargs -0 du | sort -n