Скрипт для удаления файлов, содержащих больше заданного количества байт на Centos7

В конце концов я использовал.

ip addr show scope global

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

На самом деле я не нашел чего-то вроде всего, кроме loopback. Но даже если бы я начал с этой идеи. На данный момент этого достаточно.

0
17.05.2020, 15:44
2 ответа

В вашем скрипте есть ошибки или несоответствия:

  1. Вы объявляете некоторые переменные, но не используете их;
  2. Вы используете wc -c $2 $3, но не присваиваете результат какой-либо переменной, поэтому результат только печатается в терминале, но вы не можете использовать его в своем скрипте.
  3. Вы написали fi [ $2 -gt $1]. Первым словом должно было быть if, а не fi. Шаблон if [condition]; then [do something]; fi.
  4. Из-за пункта 2 этого ответа, даже если вы написали if [ $2 -gt $1]; then, внутри $2и $1есть только имена файлов, поэтому вы не сравниваете их размер,но их имена.

Я думаю, вам стоит попробовать какой-нибудь туториал по написанию скриптов на bash, здесь мы не пишем скрипты за вас, мы решаем ваши проблемы. Здесь вы можете найти полезные ссылки :учебник по написанию сценариев bash для начинающих и учебник по написанию сценариев bash

0
28.04.2021, 23:13

Вам не нужен сценарий. Существует стандартный инструмент командной строки -, называемый find, который может делать именно то, что вы хотите. Например, чтобы удалить все файлы в разделе /tmp, размер которых превышает 1 гигабайт, сначала в целях безопасности запустите:

find /tmp -size +1G

Затем, когда вы уверены, что не собираетесь удалять ничего ненужного:

find /tmp -size +1G -delete

Обратите внимание, что в своем вопросе вы совершаете распространенную ошибку, заключающуюся в том, что вы не заключаете в кавычки свои переменные оболочки, поэтому, если какой-либо из ваших файлов содержит встроенные пробелы, вы получите нежелательные результаты. Использование команды findс собственной внутренней командой -deleteпозволяет избежать этого.

Как обычно, на странице manвы найдете полную документацию по этой очень мощной команде.

Обратите внимание, что по умолчанию команда работает со всеми подкаталогами -данного пути. Чтобы ограничить операцию, вы можете использовать опцию -maxdepth.

2
28.04.2021, 23:13

Теги

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