Как удалить каталог в Linux

12 set 2022 3 min di lettura
Как удалить каталог в Linux
Indice dei contenuti

Введение

Существует несколько способов удаления каталогов (папок, путей) и файлов в системах Linux. Если вы используете настольный файловый менеджер, такой как Gnome Files или Dolphin из KDE, вы можете удалять файлы и каталоги с помощью графического пользовательского интерфейса менеджера. Но если вы работаете на сервере или хотите удалить сразу несколько каталогов, лучший вариант — удалить каталоги (пути) из командной строки. В этой статье мы объясним, как удалять каталоги в Linux с помощью команд rmdir, rm и find.

Прежде чем начать Когда вы удаляете каталог с помощью файлового менеджера рабочего стола, этот каталог фактически перемещается в корзину и может быть легко восстановлен. При удалении файлов или каталогов из командной строки их нельзя полностью восстановить. В большинстве файловых систем Linux для удаления каталога требуется разрешение на запись в каталог и его содержимое. В противном случае будет отображаться ошибка «Операция не разрешена».

Как удалить папки с помощью rmdir

rmdir — утилита командной строки для удаления пустых каталогов. Это полезно, когда вы хотите удалить каталог, только если он пуст. Чтобы удалить каталог с помощью rmdir, введите команду, за которой следует имя каталога, который вы хотите удалить. Например, чтобы удалить каталог с именем dir1:

rmdir dir1

Если каталог не пуст, будет отображаться следующая ошибка:

rmdir: failed to remove 'dir1': Directory not empty

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

Как удалить папки с помощью rm

rm — это утилита командной строки для удаления файлов и каталогов. В отличие от rmdir, команда rm может удалять как пустые, так и непустые каталоги. По умолчанию rm не удаляет каталоги при использовании без каких-либо параметров. Чтобы удалить пустой каталог, используйте параметр -d (--dir), а для удаления непустого каталога и всего его содержимого используйте параметр -r (--recursive или -R). Например, чтобы удалить каталог с именем dir1 вместе со всем его содержимым, введите:

rm -r dir1

Если каталог или файл внутри каталога защищены от записи, вам будет предложено подтвердить удаление. Чтобы удалить каталог без запроса, добавьте команду с параметром -f:

rm -rf dir1

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

rm -r dir1 dir2 dir3

Параметр -i указывает rm запрашивать подтверждение удаления каждого подкаталога и файла. Если каталог содержит много файлов, вы можете рассмотреть возможность использования параметра -I, который спросит вас только один раз, прежде чем приступить к удалению.

rm -rI dir1

Чтобы удалить каталог, введите y и нажмите Enter.

rm: remove 1 argument recursively? y

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

rm -r * _bk

Использование обычных расширений при удалении каталогов может быть рискованным. Рекомендуется сначала составить список каталогов с помощью команды ls, чтобы вы могли видеть, какие каталоги будут удалены, прежде чем запускать команду rm.

Как удалить папки с помощью find

find — это утилита командной строки, которая позволяет искать файлы и каталоги на основе заданного выражения и выполнять действие над каждым соответствующим файлом или каталогом. Наиболее распространенным сценарием является использование команды find для удаления каталогов на основе шаблона. Например, чтобы удалить все каталоги, оканчивающиеся на _cache в текущем рабочем каталоге, вы должны запустить:

find. -type d -name '*_cache' -exec rm -r {} +

Давайте разберем приведенную выше команду:

  • . - рекурсивный поиск в текущем рабочем каталоге (.).
  • -type d - ограничить поиск каталогами.
  • -name '*_cache' - искать только каталоги, заканчивающиеся на _cache.
  • -exec — выполнить внешнюю команду с необязательными аргументами, в данном случае это rm -r.
  • {} + — добавляет найденные файлы в конец команды rm.

Как удалить пустые папки

Чтобы удалить все пустые каталоги в дереве каталогов, вы должны использовать:

find /dir -type d -empty -delete

Вот объяснение используемых опций:

  • /dir — рекурсивный поиск в каталоге /dir.
  • -type d - ограничить поиск каталогами.
  • -empty - ограничить поиск только пустыми каталогами.
  • -delete - удалить все пустые каталоги, найденные в поддереве. -delete может удалять только пустые каталоги. Используйте параметр -delete с особой осторожностью.

Используя команду rm, вы можете получить сообщение, подобное следующему:

/bin/rm: Argument list too long

Это сообщение об ошибке появляется при использовании команды rm для удаления каталога, содержащего огромное количество файлов. Это происходит из-за того, что количество файлов превышает системный лимит. Есть несколько решений этой проблемы. Например, вы можете перейти в каталог и либо вручную, либо с помощью цикла удалить подкаталоги по одному. Самое простое решение — сначала удалить все файлы в каталоге с помощью команды find, а затем удалить каталог:

find /dir -type f -delete && rm -r /dir

Вывод

С помощью rm and find вы можете быстро и эффективно удалять каталоги на основе различных критериев. Удаление каталогов — простой и легкий процесс, но вы должны быть осторожны, чтобы не удалить важные данные.

Buy me a coffeeBuy me a coffee

Supportaci se ti piacciono i nostri contenuti. Grazie.

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.