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