Ничего подобного должно быть достаточно:
awk 'BEGIN{FS=OFS=","}NR==FNR{a[$3]=$0;next}$1 in a{print a[$1],$3,$4,$5}' file1 file2
Вы опубликовали вывод df -h
, который удобочитаем для человека, но не годится для скриптов.
Вы, вероятно, захотите уделить больше внимания столбцу 4 (avail ), чем проценту в столбце 5.
Похоже, ваш скрипт знает о старых файлах журналов, которые «безопасно» удалять. Для данной операции сокращения этот набор файлов будет находиться ровно в одной файловой системе. Нет смысла анализировать общесистемный df
вывод, если вы действительно заботитесь об этом :
cd /var/log
df -k. | awk '{print $4}'
Это дает числовой отчет в килобайтах (, а не с удобочитаемыми текстовыми суффиксами )о точном количестве, которое вас интересует, свободного места для файловой системы текущего каталога. Вы можете написать вокруг этого цикл while, возможно, обрезая один файл, самый старый файл, каждый раз в цикле. Включите проверку работоспособности перед началом цикла :, убедитесь, что du -k
говорит, что вы можете освободить «достаточно» места, если это необходимо. Нет ничего интересного в том, чтобы удалить dir1/*
только для того, чтобы обнаружить, что dir2/giant_file
был тем, на чем вам следовало сосредоточиться.