Как искать и удалять каталоги рекурсивно на Linux

by itisgood

В одной из наших предыдущих статей мы объяснили, как найти каталоги и файлы, потребляющие наибольшее дисковое пространство в файловой системе в Linux.

Если вы заметили, что такие каталоги больше не содержат важных файлов и подкаталогов (например, старые резервные копии, загрузки и т. д.),

Вы можете удалить их, чтобы освободить место на диске.

В этом кратком руководстве описывается, как найти и удалить каталоги рекурсивно в файловой системе Linux.

Для достижения вышеуказанной цели вы можете использовать команду find вместе с командой rm, используя синтаксис ниже.

Здесь знак + в конце позволяет одновременно считывать несколько каталогов.

$ find /start/search/from/this/dir -name "dirname-to-delete" -type d -exec /bin/rm -rf {} + 

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

В приведенном ниже примере мы будем искать каталог с именем files_2008 и удалять его рекурсивно:

$ $find ~/Downloads/software -name "files_2008" -type d -exec /bin/rm -rf {} + 

Вы также можете использовать find и xargs; в следующем синтаксисе, действие -print0 позволяет печатать полный путь каталога на стандартном выходе, за которым следует нулевой символ:

$ find /start/search/from/this/dir -name "dirname-to-delete" -type d -print0 | xargs -0 /bin/rm -rf "{}"

Используя тот же пример выше, мы имеем:

$ find ~/Downloads/software -name "files_2008" -type d -print0 | xargs -0 /bin/rm -rf "{}"

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

 

You may also like

Leave a Comment