Ниже приведен сценарий высокого уровня, для которого мне нужно создать сценарий bash.Bash Script - нужно удалить файлы из каталога до размера каталога меньше 8 ТБ
- Каталог на сервере
- /sasdata2/SAS-USERS/PBU/
- Размер выше каталога не должно быть более чем на 8 ТБ
- Если размер превышает 8 Тб, необходимо удалить старые файлы «создан/чтобы изменить размер до 8 ТБ.
- Несколько подкаталогов в этом основном каталоге, но ничего не нужно удалять из подкаталогов. Только файлы в основном каталоге могут быть удалены.
Ниже приведен сценарий, который я использую, но он находится в бесконечном цикле выражения while. Нужна ваша помощь в создании сценария для вышеуказанного сценария.
while [ "$(du -shb /sasdata2/SAS-USERS/PBU | awk '{print $1}')" -gt 900 ]
do
find /sasdata2/SAS-USERS/PBU -maxdepth 0 -type f -printf '%[email protected]\t%p\n' | \
sort -n | head -n 25 | cut -d $'\t' -f 2- | xargs -d '\n' rm -f
done
Если подкаталоги, которым мы не разрешаем касаться, больше 8 ТБ, это не путь для завершения цикла. – tripleee
Зачем нужно быть Bash? В отличие от, скажем, Perl или Python? –
Думали ли вы о том, чтобы сжать некоторые файлы ваших пользователей, а не произвольно их удалять? Кстати, поскольку путь к вашим бедным файлам пользователей SAS появляется более одного раза в вашем скрипте, вы должны рассмотреть вопрос о его переносе в переменную. –