
Я хотел бы получить результаты этой команды:
find . -type f -size +200M -exec ls -lh {} \;
сохранить содержимое в переменной какой-либо формы, а затем удалить найденные файлы.
Как я могу это сделать?
решение1
Вам не нужно сохранять результаты find
в переменной только для того, чтобы иметь возможность удалить файлы (если у вас нет каких-то особых требований, о которых вы не упомянули), так как find
предусмотрен специальный -delete
параметр, который сделает это за вас:
find . -type f -size +200M -print -delete
Какls
Не рекомендуется разбирать вывод команды.
Если вы действительно хотите проанализировать файлы, возвращаемые функцией find
, вам нужно сделать что-то вроде:
find . -type f -size +200M -print0 | xargs -0 rm -v
Поскольку вы не можете хранить переменные оболочки с нулевыми символами, и вы не хотите прерывать скрипт пробелами (что может привести кгигантские жуки), обходным решением может быть сохранение списка во временном файле или сериализация данных (например base64
, ).