Более быстрый способ удаления большого количества файлов размером до (20 ГБ )с использованием rm -rf

Вам придется удалить завершающую новую строку из q, например. q = q.strip().

Кроме того, вам придется продумать, что произойдет, если запущено более одного vlc.

1
03.01.2021, 19:44
1 ответ

Проблема не в размере удаляемых объектов, а в их количестве.

Независимо от того, пытаетесь ли вы:rm -rf *или, в вашем скрипте, for i in "$1"/*;do:, оболочке необходимо расширить *, и это приводит к просмотру тысяч путей к файлам, а также к размещению в памяти. Когда число слишком велико, он будет либо очень медленным, либо просто завершится ошибкой (и отобразит сообщение об ошибке ).

Вы должны упростить и просто:rm -rf "${1:-missing_directory_name}"в своем скрипте, как единственную команду, непосредственно :rm сам будет обрабатывать обнаружение подфайлов.

Другой способ — использовать find "${1:-missing_directory_name}" - type f -depth -print0 | xargs -0 -n 100 rm, вызывая rm каждый раз, когда find выдает 100 имен файлов, тем самым ограничивая количество аргументов, добавляемых к rm, независимо от точного количества файлов. А затем еще одна находка, например,:find "${1:-missing_directory_name}" -type f -depth -print0 | xargs -n 100 rmdirдля rmdir оставшихся каталогов, начиная с «самых глубоких», избегая попыток сначала удалить непустой -каталог. (но первое решение делает все это с 1 пм и может оказаться наиболее эффективным в итоге)

Во время работы скрипта вы можете сделать в другом окне терминала :несколько:df -i directory_nameи увидеть, как количество инодов быстро уменьшается по мере удаления файлов в каталоге. (df -i будет отображать все индексные дескрипторы файловой системы, содержащей имя каталога _, поэтому, вероятно, оно не будет заканчиваться на 0, поскольку другие файлы этой файловой системы могут находиться в других каталогах или в родительском каталоге (с ).

Существует множество других способов (недавней находки, у вас есть другие способы не использовать xargs и т.д. ).

Идея остается прежней. :Не используйте расширение оболочки, если количество расширяемых файлов слишком велико.

0
18.03.2021, 22:38

Теги

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