Как я могу удалить папку с большим количеством подпапок быстро?

Истиной является Linux, не нуждается в сертификации SUS и не хочет становиться Unix. И этому ничего не недостает путем выполнения так.

Необходимо заплатить для становления SUS-сертифицируемыми, и это на самом деле очень дорого. Это - то, что подобный BSD и поставщики GNU/операционной системы Linux не относятся к нему.

Больше всего GNU/дистрибутив Linux следует за Основой Стандарта Linux, которая является бесплатной и распознанной почти всеми поставщиками Linux.

См.: Почему GNU/Linux SUS v3 не + совместим?

15
23.04.2014, 01:46
4 ответа

Если Ваша версия "находки" реализует - удаляют подкоманду, то можно попробовать

find directory -delete

В этом случае:

find ~/.local/share/Trash/ -delete

Некоторые команды, как комната, выполняют большую часть своей работы в ядре. В стандартных программах файловой системы, чтобы быть точным. Время, проведенное, выполняя системные вызовы, составляется таким образом, поэтому пока Ваша команда "комнаты" работает в течение долгого времени, она не делает большой работы в пространстве пользователя - системные вызовы выполняют большую часть работы.

17
27.01.2020, 19:49
  • 1
    +1; хотя это также удаляет родительский dir, и я подозреваю, что OP только хотел удалить содержание Папки "Удаленные" не сама папка –  don_crissti 04.03.2013, 16:34
  • 2
    @don_crissti: хороший комментарий. если OP, требуемый, чтобы только удалить subdirs под ~/.local/share/Trash (и не файлы на 1-м уровне), то: find ~/.local/share/Trash/*/ -delete (конечно, это также удалит файлы (и директора) в любом из тех Повреждают / */subdirs также), –  Olivier Dulac 04.03.2013, 18:16
  • 3
    +1 для объяснения нечетного поведения time –  Martin Thoma 04.03.2013, 19:53
  • 4
    find directory -delete действительно быстрее, чем rm -rf directory? В конце концов, они выполняют ту же работу, и нет двух способов сделать это. философия –  Gilles 'SO- stop being evil' 05.03.2013, 01:00
  • 5
    @Johan набора ASCII действительно быстра. Вы когда-либо получали шанс узнать причину? –  Harshdeep 16.03.2017, 18:35

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

{ mv directory directory.gone && rm -rf directory.gone; } &

Технически это обманывает, так как я не ускорил фактическое удаление, но практически это очень полезно: Я использую этот прием все время, таким образом, я не должен ожидать медленных операций удаления.

20
27.01.2020, 19:49
  • 1
    Большой. Каков Ваш вариант использования для того, чтобы сделать это все время? Если Вы делаете это много, нет ли опасность, Вы будете отставание, получить несколько 'directory.gone's и сбой? Я предполагаю, что Вы используете суффикс как '$$' или '% (дата...)' –  smci 28.11.2017, 02:37
  • 2
    Если бы мне было нужно это, то я мог бы, вероятно, использовать mktemp с аргументами, которые гарантируют, что это остается в той же файловой системе. Но я не могу сказать, что у меня есть определенный пример прямо сейчас. –  kojiro 28.11.2017, 02:40
  • 3
    kojiro да благодарит, mktemp то, что я пытался помнить... –  smci 28.11.2017, 03:03

Это - только частичный ответ, проливая свет на три значения возвраты команды; заключенный в кавычки из time(1) страница справочника:

(i) прошедшее реальное время между вызовом и завершением, (ii) пользовательское процессорное время (сумма tms_utime и tms_cutime значения в a struct tms как возвращено times(2)), и (iii) системное процессорное время (сумма tms_stime и tms_cstime значения в a struct tms как возвращено times(2))."

0
27.01.2020, 19:49

rm -rf directory или rm -rf * , конечно, самый быстрый способ, если только ваш локальный rm реализация нарушена.

Использование find не дает никаких преимуществ.

Быстро это или медленно, в основном зависит от файловой системы и реализации ОС. Так что вопрос кажется неуместным.

UFS и ZFS в Solaris, как известно, очень быстро справляются с такого рода задачами, поскольку обе реализации файловых систем включают код отложенного фонового удаления, который вызывает unlink () и rmdir () вызывает быстрый возврат, даже если связанный объект в целом займет больше времени.

Благодаря отложенному фоновому удалению в ядре обновления каталога также могут выполняться быстро, что помогает ускорить всю операцию.

1
27.01.2020, 19:49

Теги

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