du command - показать файл или папку на выходе?

Недавние обновления меняют коэффициенты масштабирования шрифта в моей системе, перезагружают их с помощью этой команды ...

gsettings set org.gnome.desktop.interface text-scaling-factor '1.0'
1
задан 31 December 2016 в 17:17

1 ответ

Как говорит Серг, du не может этого сделать сам по себе. Чтобы безопасно обрабатывать имена файлов, лучший способ - отделить их от символа ASCII nul (\0), и du может это сделать. Таким образом, используя это, наряду с возможностью sort и xargs 'обрабатывать ввод с нулевым ограничением:

du -0ah |
  sort -zh |
  xargs -0 sh -c 'for i; do s=${i%%[[:space:]]*};f=${i#*[[:space:]]}; echo "$s" "$(ls --color -dF "$f")"; done' _

Опции -0, -z и -0 указывают du , sort и xargs использовать ASCII nul в качестве разделителя.

Затем, s=${i%[[:space:]]*}, чтобы получить начало строки до пробела (который является размером) и f=${i#*[[:space:]]}, чтобы получить все остальное (имя файла).

Пример:

$ du -0ah Screenshots | sort -zh | xargs -0 sh -c 'for i; do s=${i%%[[:space:]]*};f=${i#*[[:space:]]}; echo "$s" "$(ls --color -dF "$f")"; done' _
512 Screenshots/desktop.ini*
264K Screenshots/Screenshot (1).png*
269K Screenshots/

Поскольку я использовал ls --color, я также получаю приятный цветовой вывод:

6
ответ дан 23 May 2018 в 02:53
  • 1
    Как насчет этого? [F1]. Вам не нужны дополнительные xargs и sh. – gniourf_gniourf 31 December 2016 в 16:10
  • 2
    @gniourf_gniourf, конечно. while недооценивается. – muru 31 December 2016 в 16:12

Другие вопросы по тегам:

Похожие вопросы: