Получите имя файловой системы и использование с 'df-h'

Я боролся с этим сам некоторое время.

Необходимо использовать -m опция, которая позволяет Вам указывать шаблон для файлов, чтобы продолжить работать. Включите шаблон в кавычки, если Вы хотите *, *.jpg или *.* и т.д. для работы (или иначе оболочка сделает соответствие в текущем каталоге вместо того, чтобы передать шаблон для ntfs-восстанавливания-после-удаления).

Для подведения это, что работало на меня, была следующая команда:

sudo ntfsundelete /dev/sdb2 -u -m '*'
6
27.09.2013, 00:12
5 ответов
df -P | sed -n '/test/s/.*[[:blank:]]\(.*\)%[[:blank:]]*\(.*\)/\2 \1/p'

(который предполагает, что пути точки монтирования не содержат % или символы новой строки),

10
27.01.2020, 20:20
  • 1
    +1 для -P (posix) использование. –  Olivier Dulac 27.09.2013, 11:23

Я думаю что-то следующим образом. Я не понимаю целого вопроса хотя

df -h | awk '/test/{print $1" "$5}' | sed -e ':a;N;$!ba;s/\n/ /g' -e 's/%//g'

Так как вопрос изменился, вот обновленный ответ

df -h | awk '/test/{print $1, +$5}'
8
27.01.2020, 20:20
  • 1
    , я понятия не имею, что Вы имеете в виду о + 5$. Вы имеете в виду awk часть?. Можно ли обеспечить пример. Не стесняйтесь редактировать ответ. –  Valentin Bajrami 27.09.2013, 00:01
  • 2
    @asonwryan Это обрежет пространство между тестом / и процентом. Таким образом, я не думаю, что это - то, что корреспондента хотят. –  Valentin Bajrami 27.09.2013, 00:13
  • 3
    Мое плохое: забыл добавлять пространство. Фиксированный. –  jasonwryan 27.09.2013, 00:23
  • 4
    Да, это - хорошее! Избавляет от необходимости sed. –  Valentin Bajrami 27.09.2013, 00:26
df | awk '/test/ {print $1 " " $5}'

распечатает

/test 10%
/test/drv0 20%
/test/drv1 15%
6
27.01.2020, 20:20
  • 1
    Много способов удалить знак процента, включая | tr -d '%' –  glenn jackman 26.09.2013, 23:36
  • 2
    Это предполагает, что пути точки монтирования не содержат символы пробела. –  Stéphane Chazelas 26.09.2013, 23:36
  • 3
    @StephaneChazelas да, это делает. Но я утверждал бы, что это довольно редко а не в пределах такого простого решения для оболочки. –  Martin von Wittich 26.09.2013, 23:47
  • 4
    @glennjackman, который я знаю, но я намеренно оставил ту часть как осуществление для читателя :) –  Martin von Wittich 27.09.2013, 00:59

Я использовал бы int() функция в awk, который удалит % и важный -P флаг к df потому что, если раздел в LVM затем также это - печать правильно.

df -hP | awk '/test/{print $1,int($5)}'
4
27.01.2020, 20:20

Это не хорошее решение для Вашей конкретной ситуации (она работает, но напрасно сложна), необходимо использовать ответы, уже предоставленные. Я просто хотел упомянуть другой инструмент, который очень полезен, когда Вы хотите присоединиться к выводу нескольких программ, paste:

DESCRIPTION
   Write  lines  consisting  of  the sequentially corresponding lines from
   each FILE, separated by TABs, to standard output.   With  no  FILE,  or
   when FILE is -, read standard input.

Объединенный с ударом обрабатывают замену, можно объединить вывод двух команд как это:

$ paste  <(df -h | grep test | sed -e 's/*%.^ //g;s/.*[ ^I]//') \
       <(df -h  | grep test  | cut -d '%' -f1 | sed -e 's/*%.^ //g;s/.*[ ^I]//')
 /test 10
 /test/drv0 20
 /test/drv1 15

Или, для использования более простого примера:

$ paste <(echo -e "a\nb\nc") <(echo -e "1\n2\n3")
a   1
b   2
c   3
4
27.01.2020, 20:20
  • 1
    , который я никогда не видел (или думал), имеющий несколько перенаправлений ввода в случае как это. Никакая идея это даже работало бы. Спасибо за указание на него. –  kurtm 06.10.2013, 18:55

Теги

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