Удалите файлы из каталога: память исчерпывается

VMware имеет руководство при выполнении V2P (Виртуальный к Физическому) миграция здесь: http://www.vmware.com/support/v2p/index.html

1
задан 13 April 2017 в 15:13
6 ответов

Это походит на проблему с find. Я заметил несколько отчетов об ошибках людей, получающих ту ошибку с определенной версией GNU findutils.

Можно попытаться заменить, "находят" с "ls" и "grep". Что-то вроде этого:

cd somedir
\ls -f | grep "something" | xargs -d "\n" rm

Обратная косая черта на \ls вместо этого ls говорит удару игнорировать любые псевдонимы, которые будут влиять на Ваш выходной формат. Вы могли также сказать /bin/ls если Вы забываете прием обратной косой черты. -f опция говорит этому отключать сортировку (который экономит время), и включайте скрытые файлы. -d "\n" аргумент xargs говорит, что разделил на новых строках вместо пробелов. Отметьте это -d не поддерживается на всех версиях xargs, который является позором.

Отметьте это ls something* не будет работать, начиная с something* расширен в ударе, не ls, и будет приводить к "списку аргументов слишком долго" ошибка. Вот почему Вы передаете результат по каналу через grep.

2
ответ дан 3 December 2019 в 18:13

Передача по каналу находит, что результаты через голову, кажется, работают на меня (у меня есть подобная проблема, где выстрелы камеры видеонаблюдения от 6 камер были загружены однажды минута),

find . -type f | head -1000 | xargs rm

Если это делает, циклично выполняет его:

for i in {1..999}
do
   find . -type f | head -1000 | xargs rm
done

Замените 999 тем, сколько тысячи файлов там (если Вы знаете).

2
ответ дан 3 December 2019 в 18:13

Попытайтесь использовать ls вместо находки (ls -1 | xargs rm).

Или

Используйте для цикла по выводу ls

#!/bin/sh
for i in `ls -1`; do
  rm $i
done

(в обоих тех случаях, если Вы все еще испытываете затруднения, оболочка может поражать потолок памяти: попытайтесь передать по каналу ls через head сокращать список)

Или

Запишите это в perl/C/etc. (выполняющий итерации readdirвывод и собирающий "мусор", когда Вы идете),

... существуют, вероятно, больше "Или" случаи, но они пружина сразу для возражения.

0
ответ дан 3 December 2019 в 18:13
  • 1
    См. также ответы на свой исходный вопрос (которые детализируют целый набор других больших альтернатив помимо тех, я упоминаю выше), –  voretaq7 6 April 2010 в 21:40

Интересно, что последняя версия rsync сделала бы с пустым каталогом как источник и --delete опция...

0
ответ дан 3 December 2019 в 18:13
find . -type f -print | awk '{ print "rm \"" $1 "\""} | sh
0
ответ дан 3 December 2019 в 18:13

Просто запустите rm как часть вашей команды поиска. Нет необходимости в трубках / xargs / модной печати. ​​

найти. -exec rm -f {} +

0
ответ дан 3 December 2019 в 18:13

Теги

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