Построение конвейера UNIX, который находит все файлы в каталоге (используя команды find, xargs и du) - PullRequest
0 голосов
/ 27 сентября 2019

Мне нужно построить конвейер 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 Ответ

1 голос
/ 27 сентября 2019

Две ошибки:

  1. Файлы могут содержать «пробелы» - пользователь print0

  2. Это должны быть файлы.Используйте -тип f

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

...