Портативный sh
, не специфичный для bash -и без петель O (n ):
eval x=\$$(($#-1))
-1
дает предпоследний аргумент; замените его нужной позицией относительно конца или полностью отбросьте, если вам нужен самый последний.
Возможны как минимум две причины:
Возможно, ваш find
ничего не печатает. В этом случае xargs
запускает du -h
, что эквивалентно du -h.
. Исследуйте--no-run-if-empty
опцию GNU xargs
. Или лучше привыкнуть к find … -exec …
вместо find … | xargs …
. Вот так:
find. -maxdepth 2 -type f -size +1G -exec du -h {} + | sort -rh
find -size
проверяет (почти )то, что показывает du --apparent-size
, в то время как du
без этой опции может сильно расходиться, особенно когда файл разреженный. Вариант не переносной.
Я думаю, что в вашем случае виновата первая причина. Примечание ./<repo>/.git/info
не может происходить из find. -maxdepth 2 -type f
, потому что его глубина равна 3. Это означает, что du
рекурсивно работал с некоторым каталогом.