У меня есть рабочая станция, которая временно хранит изображения перед загрузкой сжатых версий на сервер для безопасного хранения. У меня есть интерес к удалению старых файлов один раз в день в 3 часа ночи, используя сценарий, запланированный через launchd.
#!/bin/bash
find /some/directory/with/pictures/* -exec rm -rf {} \+
Я проверил это, чтобы работать на рабочей станции для разработки только с ~ 250 МБ изображений (30 изображений).
Поскольку на рабочих станциях этот сценарий не запущен, у них много образов, порядка нескольких сотен гигабайт. Это означает, что когда find
выполняется с помощью сценария оболочки, он останавливается и говорит «Слишком много аргументов».
Я потратил много времени, пытаясь выяснить, почему (пробуя xargs, проверяя, изменилось ли +
на ;
повлияло ли что-нибудь ... и т.д.), Единственное, что я не пробовал, - это входить в каталог через скрипт оболочки, чтобы избежать использования find в целом. Я думаю, что "Too Many Arguments" имеет смысл - кажется, что количество аргументов ограничено, и у меня ~ 33 000 файлов на одной рабочей станции, на которой я проверяю эту концепцию.
Чтобы запутать меня еще больше, выполните find ./ -exec rm -rf {} \;
внутри самого каталога через Терминал работает (медленно).
Я выполнил удаление с помощью Терминала, так что я не беспокоюсь о процессе в будущем (он не даст около 33 тыс. Снимков в день), но я хочу знать, зачем find
работы в Терминале с 33 тыс. Аргументов, но не в сценарии оболочки.