Я запустил две отдельные команды, каждая из которых производила разные числа. Может кто-нибудь помочь мне понять, почему?

find -type d -name *log* | du -hcs

find . -type d -name '*log*' -print0 | xargs -0 du -hcs

1 ответ1

0

Я уверен, что downvoter(ы) думал, что способ выяснить, почему

man du
и удивился, почему ты не прочитал руководство.

По иронии судьбы, хотя это действительно так для BSD, в дистрибутивах Linux это не способ узнать, потому что на странице руководства GNU отсутствуют некоторые довольно простые вещи. Пользователи Linux должны бежать

info coreutils du
чтобы увидеть документацию с одним очень важным предложением в.

Это второе предложение (третье в OpenBSD) страницы руководства для команды BSD du .

Таким образом, даже если ваш подстановочный знак - в вашей команде, а не в исправленной версии, которая была дана вам в ответе - (потенциально) неверно раскрыт в вашей команде find , это не имеет разницы. Независимо от того, что ваша команда find записывает в свой стандартный вывод, она полностью игнорируется командой du .

Из руководства, в котором четко указано, что происходит, в сочетании с тем, что уже было сказано в этом ответе в третьем пункте, должно быть ослепительно очевидно, почему вы видите различные варианты поведения и результаты между вашей командой и исправленной. Приготовься пнуть себя. ☺

дальнейшее чтение

  • du MacOS 10 справочных страниц. Apple Corporation.
  • du Руководства FreeBSD 9.2. 2012-11-04.
  • du Руководства по NetBSD 6.1.3. 2006-09-24.
  • du Страницы руководства OpenBSD 5.4. 2014-02-14.
  • du Страницы руководства DragonFly BSD 3.7. 1994-04-01.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .