3

Я хотел бы взять результаты этой команды:

find . -type f -size +200M -exec ls -lh {} \;

сохранить содержимое в переменной какой-либо формы, а затем удалить найденные файлы.

Как я могу это сделать?

1 ответ1

1

Вам не нужно хранить результаты find в переменной только для того, чтобы можно было удалить файлы (если только у вас нет особых требований, которые вы не упомянули), так как find предоставляет специальный параметр -delete который сделает это за вас. :

find . -type f -size +200M -print -delete

Так как вывод команды ls не рекомендуется.

Если вы действительно хотите разобрать файлы, возвращаемые функцией find , вам нужно сделать что-то вроде:

find . -type f -size +200M -print0 | xargs -0 rm -v

Поскольку вы не можете хранить переменные оболочки с нулевыми символами и не хотите разбивать скрипт на пробелы (что может привести к гигантским ошибкам), обходным путем может быть сохранение списка во временном файле или сериализация данных (например, base64).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .