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

Linux 构造查找目录中所有文件的UNIX管道(使用find、xargs和du命令),linux,unix,embedded-linux,unix-timestamp,Linux,Unix,Embedded Linux,Unix Timestamp,我需要构造一个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

我需要构造一个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', ...])
两个错误:

  • 文件可以包含“空格”-用户打印0

  • 一定是文件。使用-f型


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

    “获取断言错误”。有趣。请更新您的Q以显示错误消息的确切文本。(别让我们猜;-),好吗?)。祝你好运。我已更新了错误消息。很难理解
    du
    xargs
    sort
    是如何生成该消息的。尝试从管道右侧删除元素(即首先
    sort
    ,然后
    du
    ),并隐藏std out输出,即
    /dev/null
    。让我们知道哪个程序正在生成该消息。祝你好运