Шаги по рекурсивному удалению файлов или каталогов в Linux

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

Случайно удалили важные файлы на устройстве Linux?

Не беспокойтесь. Wondershare Recoverit может вернуть потерянные файлы в течение 3 шагов. Профессиональное программное обеспечение для восстановления данных в Linux является абсолютно надежным и на 100% безопасным.

Каталог может содержать множество подкаталогов и файлов. При работе с файловой системой Linux может потребоваться удаление всех файлов и подкаталогов в каталоге. Это называется рекурсивным удалением. Для рекурсивного удаления файлов или каталогов (также известных как папки в Windows) в Linux используется команда rm. Команда rmdir удаляет только пустые каталоги. В этом руководстве представлены шаги по рекурсивному удалению файлов и каталогов в Linux.

Часть 1. Как удалить каталог рекурсивно в Linux с помощью команды rm

Краткое описание синтаксиса команды rm для рекурсивного удаления каталогов/папок:

Синтаксис команды
Описание
-f Сильная опция. Никогда не запрашивает несуществующие файлы или аргументы.
-r Рекурсивно удалять каталоги и их содержимое
-v Избыточный вывод
rm -- '-dir1' Удалить каталог или файл, имя которого начинается с символа '-'.
rm ./-dir1 То же самое, что и раньше
rm -rfv 'имя директории здесь' Поставьте кавычки вокруг проблемного имени файла/папки.
rm -rfv \$dirname1 То же самое, что и раньше

В Linux и Unix-подобных системах все считается файлом. Другими словами, к "файлам" относятся фотографии, документы, каталоги/папки, SSD/жесткие диски, сетевые карты, USB-устройства, клавиатуры, принтеры и сетевые соединения.

Примеры рекурсивного удаления папки

В этом примере мы рекурсивно удалим папку data в текущем домашнем каталоге:

rm -r /home/vivek/data/

Перед удалением каталога data указанный каталог /home/vivek/data/ будет очищен от всех подкаталогов, включая их подкаталоги и файлы. Если в командной строке не указана опция -f (force), пользователю будет предложено удалить все файлы, защищенные от записи в каталогах:

rm -rf dirname-here

В качестве альтернативы можно использовать следующую команду:

rm -r -f /path/to/folder/

Для удаления папки, имя которой начинается с буквы "-", например "-dsaatia", используйте одну из следующих команд:

rm -rf -- --dsaatia

Вы также можете выполнить следующую команду:

rm -rf ./--dsaatia

Для просмотра подробных результатов можно использовать опцию -v. Другими словами, команда rm в Linux будет объяснять, что происходит с нашими файлами и папками. Например:

rm -rfv /path/to/dir1
rm -r -f -v /home/vivek/oldpartpics

Удаление папок с уникальными символами имен

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

ls -l

Предположим, что у нас есть папка "Our Sales Data", а в ней "baddir#" или "dir2 ;#". Как же избавиться от каталогов с необычными именами? Решение простое. Заключим проблемное имя файла или папки в кавычки. В качестве примера:

rm 'Our Sales Data'
rm -rfv '/path/to/Dir 1 ;'
rm -r -f -v "baddir#"
rm a\ long \dir1 \name

Иногда перед мета-символом в имени файла или папки требуется обратная косая черта (\):

rm \$dir1

рекурсивно удалить каталог или папку

Часть 2. Как удалять файлы рекурсивно в Linux с помощью команды rm

Рекурсивное удаление всех файлов

При использовании флага -r команда rm удаляет содержимое всех типов файлов.

Но сначала, используя команду ls, посмотрим на домашние каталоги. В данном примере имеется пять каталогов: Desktop, dir2, Documents, Downloads и removerecurdir.

ls ~/

использование команды ls

Предположим, что мы хотим удалить каталог removecurdir и его содержимое, включая все файлы и подкаталоги. Выполните приведенный ниже синтаксис.

rm -r removerecurdir/

Вывод ls показывает, что каталог и его содержимое были успешно удалены.

рекурсивное удаление файлов в linux

Рекурсивное удаление файлов по размеру

Ниже описаны шаги по рекурсивному удалению файлов (<10 МБ) с помощью команды find.

Синтаксис команды find следующий:

find <ParentDirectory> -type f -size -<размер и единицы измерения> -exec rm {} +

В приведенном ниже примере для доступа к защищенным файлам можно использовать команду sudo.

sudo find /var/log -type f -size -10M -exec rm {} +

Знак минус (-) должен быть заменен на знак плюс (+).

find <ParentDirectory> -type f -size +<размер и единицы измерения> -exec rm {} +

В следующем примере я использую предыдущий синтаксис для удаления файлов размером более 1 ГБ.

find /var/log -type f -size +1G -exec rm {} +

Рекурсивное удаление файлов по расширению (тип файла)

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

Найдите содержимое домашнего каталога, который называется testhint с помощью команды tree.

tree testhint/

Родительский каталог testhint имеет файл (file1.txt) и два подкаталога: testhint2 имеет file3.txt, а testhint3 имеет file3 и something.txt.

родительский каталог testhint

Предположим, что вы хотите рекурсивно удалить все txt-файлы. Синтаксис следующий:

find <ParentDirectory> -type f -name '*.<Extension>' -print -delete

Затем выполните эту команду для рекурсивного удаления всех текстовых файлов в родительском каталоге testhint.

find ~/testhint -type f -name '*.txt' -print -delete

Все текстовые файлы были удалены, остался только файл file3 без расширения.

дерево testhint

рекурсивно удалить все txt-файлы

Удалить файлы по расширению можно также с помощью команд find вместе с exec.

find вместе с командами exec

Синтаксис для удаления файлов по расширению с командой -exec следующий:

find <ParentDirectory> -type f -name '*.<Extension>' -exec rm -f {} \;

Выполните приведенную ниже команду для удаления файлов .log.

find ~/testhint -type f -name '*.log' -exec rm -f {} \;

Аналогичное решение можно получить с помощью команды xargs. Различие между xargs и exec заключается в том, что exec выполняет функцию rm всякий раз, когда файл соответствует условию. Команда xargs выполняет команду rm один раз для каждого найденного файла, удовлетворяющего условию.

Чтобы удалить все файлы по расширению с помощью find и xargs, используйте следующий синтаксис:

find <ParentDirectory> -name "*.<FileExtension>" -print0 | xargs -0 rm

удаление расширения с помощью find и xargs

Введите команду, показанную ниже, чтобы удалить все файлы .c с помощью xargs.

find . -имя "*.c" -print0 | xargs -0 rm

И снова выбранные файлы расширения были успешно удалены.

успешно удалены выбранные файлы расширений

Рекурсивное удаление всех файлов на основе разрешений

Давайте посмотрим на новое содержимое каталога testhint. Четыре файла имеют полный доступ (file2, file3.c, file6.c и file7).

содержимое каталога testhint

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

find <ParentDirectory> -perm <Permissions> -print0 | xargs -0 rm

Выполните приведенную ниже команду для удаления всех файлов с полным доступом для всех пользователей.

find ~/testhint -perm 777 -print0 | xargs -0 rm

удаление всех файлов на основе разрешений

Рекурсивное удаление файлов на основе времени их модификации или создания

Выполните следующий синтаксис:

find ~/testhint -perm 777 -print0 | xargs -0 rm

Если требуется удалить файлы, созданные или модифицированные в последний день (последние 24 часа), используйте следующую команду, где 1 обозначает количество дней, а символ минус (-) - файлы, созданные или модифицированные до заданного количества дней.

find <Каталог> -type f -mtime -1 -delete

Замените символ минус на символ плюс, чтобы удалить файлы, созданные или модифицированные до суток, до 24 часов.

find <Directory> -type f -mtime +1 -delete

Часть 3. Что делать, если вы случайно удалили файл или папку в Linux?

В Linux случайное удаление файла или папки может стать настоящей неприятностью, но есть действия, которые помогут повысить шансы на успешное восстановление:

  • Прекратить работу с компьютером: Чтобы предотвратить дальнейшую потерю данных, немедленно прекратите работу с компьютером и не записывайте новые данные на диск, где находился удаленный файл.
  • Действуйте быстро: Чем дольше вы ждете начала процесса восстановления, тем выше риск необратимой потери данных.
  • Регулярно создавайте резервные копии: Регулярное создание резервных копий позволяет обеспечить наличие последней копии важных данных на случай их случайного удаления.
  • Поддерживайте файловую систему в хорошем состоянии: Регулярное обслуживание диска, например, проверка на наличие ошибок и их исправление, поможет поддерживать файловую систему в хорошем состоянии и облегчит восстановление.

Лучшие средства восстановления данных Linux также помогут восстановить потерянные или удаленные файлы. Следуя этим советам и используя правильное средство восстановления данных, Вы можете увеличить шансы на успешное восстановление удаленных файлов и папок в Linux.

Wondershare Recoverit - безопасная и надежная программа для восстановления данных в Linux

5 481 435 человек скачали ее.

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

Совместимость со всеми основными дистрибутивами Linux, включая Ubuntu, Linux Mint, Debian, Fedora, Solus, Opensuse, Manjaro и др.

Помогает при более чем 500 сценариях потери данных, таких как удаление, форматирование диска, сбой ОС, отключение питания, вирусная атака, потеря раздела и т.д.

Простой интерфейс позволяет восстанавливать данные с жестких дисков Linux всего за несколько кликов.

Работает через удаленное соединение. Вы можете восстановить потерянные данные даже при сбое устройства Linux.

Подведение итогов

Поскольку Linux является настолько универсальной и адаптируемой операционной системой, пользователи могут рекурсивно использовать различные методы удаления файлов или каталогов (или папок) в Linux. Все описанные выше альтернативы применимы практически ко всем дистрибутивам Linux. Кроме того, при случайном удалении файлов и папок доступны средства восстановления данных в Linux.