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

Use rm to Delete Files and Directories on Linux

Estamos traduciendo nuestros guías y tutoriales al Español. Es posible que usted esté viendo una traducción generada automáticamente. Estamos trabajando con traductores profesionales para verificar las traducciones de nuestro sitio web. Este proyecto es un trabajo en curso.

This guide shows how to use rm to remove files, directories, and other content from the command line in Linux.

To avoid creating examples that might remove important files, this Quick Answer uses variations of filename.txt . Adjust each command as needed.

The Basics of Using rm to Delete a File

rm filename1.txt filename2.txt 

Options Available for rm

-i Interactive mode

Confirm each file before delete:

-f Force

-v Verbose

Show report of each file removed:

-d Directory

Note: This option only works if the directory is empty. To remove non-empty directories and the files within them, use the r flag.

-r Recursive

Remove a directory and any contents within it:

Combine Options

Options can be combined. For example, to remove all .png files with a prompt before each deletion and a report following each:

remove filename01.png? y filename01.png remove filename02.png? y filename02.png remove filename03.png? y filename03.png remove filename04.png? y filename04.png remove filename05.png? y filename05.png

-rf Remove Files and Directories, Even if Not Empty

Add the f flag to a recursive rm command to skip all confirmation prompts:

Combine rm with Other Commands

Remove Old Files Using find and rm

Combine the find command’s -exec option with rm to find and remove all files older than 28 days old. The files that match are printed on the screen ( -print ):

find filename* -type f -mtime +28 -exec rm '<>' ';' -print 

In this command’s syntax, <> is replaced by the find command with all files that it finds, and ; tells find that the command sequence invoked with the -exec option has ended. In particular, -print is an option for find , not the executed rm . <> and ; are both surrounded with single quote marks to protect them from interpretation by the shell.

This page was originally published on Tuesday, July 3, 2018.

Источник

Примеры команды RM Linux

rm означает «remove», как следует из названия, команда rm используется для удаления файлов и каталогов в UNIX-подобной операционной системе. Если вы новичок в Linux, вы должны быть очень осторожны при запуске команды rm, потому что, как только вы удалите файлы, вы не сможете восстановить содержимое файлов и каталогов. Хотя есть некоторые инструменты и команды, с помощью которых можно восстановить удаленные файлы, но для этого вам нужны экспертные навыки.

Читайте также:  Tp link ue200 linux driver

В этом посте я продемонстрирую 10 примеров команд Linux rm. Ниже приведен основной синтаксис команды rm.

Удаление файла

Давайте удалим файл с именем «linux.log»

Удаление нескольких файлов одновременно.

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

$ rm file1.txt file2.txt file3.txt file4.txt

Интерактивное удаление файлов

Параметр ‘-i‘ спрашивает разрешение перед удалением, как показано ниже.

$ rm -i linuxstufff.log rm: remove regular file ‘linuxstufff.log’? y

Удаление пустой директории

Используйте опцию «-d» для удаления пустой папки.

$ ls -R appdata/ appdata/: $ rm -d appdata/

Вы также можете использовать команду ‘rmdir‘ для удаления пустых папок.

$ ls -R appdata/ appdata/: $ rmdir appdata

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

Команде rm вместе параметром ‘-r‘ рекурсивно удалит все файлы и подкаталогов в родительской директории.

$ ls -lR dbstore/ dbstore/: total 0 -rw-rw-r--. 1 mordeniuss mordeniuss 0 Mar 26 23:59 file1.log -rw-rw-r--. 1 mordeniuss mordeniuss 0 Mar 26 23:59 file2.log -rw-rw-r--. 1 mordeniuss mordeniuss 0 Mar 26 23:59 file3.log drwxrwxr-x. 2 mordeniuss mordeniuss 6 Mar 26 23:59 service dbstore/service: total 0 $ rm -r dbstore/

Удаление файлов и подкаталогов интерактивно

Используйте опцию ‘-ri‘ в команде rm для интерактивного удаления файлов и подкаталогов.

$ ls -lR dbstore/ dbstore/: total 0 -rw-rw-r--. 1 mordeniuss mordeniuss 0 Mar 27 00:02 file1.log -rw-rw-r--. 1 mordeniuss mordeniuss 0 Mar 27 00:02 file2.log -rw-rw-r--. 1 mordeniuss mordeniuss 0 Mar 27 00:02 file3.log drwxrwxr-x. 2 mordeniuss mordeniuss 6 Mar 27 00:02 service dbstore/service: total 0 [mordeniuss@cloud ~]$ rm -ri dbstore/ rm: descend into directory ‘dbstore/’? y rm: remove regular empty file ‘dbstore/file1.log’? y rm: remove regular empty file ‘dbstore/file2.log’? y rm: remove regular empty file ‘dbstore/file3.log’? y rm: remove directory ‘dbstore/service’? y rm: remove directory ‘dbstore/’? y

Принудительное удаление файлов

Параметр ‘-f‘ в команде rm принудительно удаляет файлы независимо от их прав доступа, а также игнорирует несуществующие файлы.

Давайте удалим защищенный от записи файл ‘tech.txt’

$ ls -l tech.txt -r--r--r--. 1 mordeniuss mordeniuss 0 Mar 27 00:23 tech.txt $ rm tech.txt rm: remove write-protected regular empty file ‘tech.txt’?

Как мы видим выше, когда мы пытаемся удалить файл, защищенный от записи, с помощью команды rm без опции ‘-f‘, выходит предупреждение.

Теперь попробуйте удалить файл, используя опцию ‘-f‘.

Также попробуем удалить несуществующий файл.

Примечание: опция -f не будет работать для каталогов, защищенных от записи.

Давайте рассмотрим пример, каталог ‘home/home/mordeniuss/location/protected‘ защищен от записи, а файл ‘db_stuff‘ внутри этого каталога нет.

$ ls -ld /home/mordeniuss/location/ drwxrwxr-x. 2 root root 29 Mar 27 00:43 /home/mordeniuss/location/ $ ls -l /home/mordeniuss/location/db_stuff -rw-rw-r--. 1 mordeniuss mordeniuss 17 Mar 27 00:43 /home/mordeniuss/location/db_stuff $ rm -f /home/mordeniuss/location/db_stuff rm: cannot remove ‘/home/mordeniuss/location/db_stuff’: Permission denied

Проверка при удалении более 3 файлов или рекурсивном удаление

Параметр ‘-I‘ в команде rm перед удалением более трех файлов или рекурсивным удалением запрашивает подтверждение.

Читайте также:  Astra linux автозагрузка скрипта

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

$ ls -l linux_store/ total 0 -rw-rw-r--. 1 mordeniuss mordeniuss 0 Mar 27 01:07 app1.log -rw-rw-r--. 1 mordeniuss mordeniuss 0 Mar 27 01:07 app2.log -rw-rw-r--. 1 mordeniuss mordeniuss 0 Mar 27 01:07 app3.log -rw-rw-r--. 1 mordeniuss mordeniuss 0 Mar 27 01:07 app4.log -rw-rw-r--. 1 mordeniuss mordeniuss 0 Mar 27 01:07 app5.log $ rm -I linux_store/app* rm: remove 5 arguments? y

Регулярные выражения в команде rm

Мы можем использовать регулярные выражения в команде rm, некоторые примеры показаны ниже:

Давайте удалим 5 файлов журнала, начиная с log1 до log5 в каталоге ‘linux_store‘.

$ pwd /home/mordeniuss/linux_store $ ll total 0 -rw-rw-r--. 1 mordeniuss mordeniuss 0 Mar 27 01:15 log1.txt -rw-rw-r--. 1 mordeniuss mordeniuss 0 Mar 27 01:15 log2.txt -rw-rw-r--. 1 mordeniuss mordeniuss 0 Mar 27 01:15 log3.txt -rw-rw-r--. 1 mordeniuss mordeniuss 0 Mar 27 01:15 log4.txt -rw-rw-r--. 1 mordeniuss mordeniuss 0 Mar 27 01:15 log5.txt -rw-rw-r--. 1 mordeniuss mordeniuss 0 Mar 27 01:15 log6.txt . $rm -f log.txt

Удалим все файлы в данной директории, которые заканчиваются на ‘.txt

Удалим все файлы в текущем каталоге, которые имеют три символа в расширение.

Удаление большого количества файлов

Если вы пытаетесь удалить большое количество файлов с помощью команды rm, вы получите сообщение об ошибке
Argument list too long‘ (Список аргументов слишком длинный)

В приведенном ниже примере я пытаюсь удалить все файлы (около 300001) каталога ‘/home/mordeniuss/linux_store‘ сразу.

$ ls -l | wc -l 300001 $ rm *.log -bash: /bin/rm: Argument list too long

Чтобы решить эту проблему, используйте команду:

$ find ~/linux_store/ -type f -exec rm <> \;

Удаление файлов, начинающихся с дефиса (-)

Давайте предположим, что у нас есть файл с именем ‘-store‘ в нашем текущем каталоге, и мы хотим удалить этот файл.

$ ll total 0 -rw-rw-r--. 1 mordeniuss mordeniuss 0 Mar 27 02:05 -store $ rm -store rm: invalid option -- 's' Try 'rm --help' for more information. [mordeniuss@cloud linux_store]$

Удалить этот файл можно с помощью команд ниже.

$ rm -- \ -store ИЛИ $ rm ./\ -store 

Источник

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

В операционной системе Linux можно выполнить большинство действий через терминал. Удаление каталога Linux — это достаточно простое действие, которое можно выполнить просто открыв файловый менеджер.

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

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

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

Другая команда, которую можно применить — это rm. Она предназначена для удаления файлов Linux, но может использоваться и для папок если ей передать опцию рекурсивного удаления -r:

Читайте также:  Kali линукс для windows 10

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

Команда -R включает рекурсивное удаление всех подпапок и файлов в них, -f — разрешает удалять файлы без запроса, а -v показывает имена удаляемых файлов. В этих примерах я предполагаю что папка которую нужно удалить находится в текущей рабочей папке, например, домашней. Но это необязательно, вы можете указать полный путь к ней начиная от корня файловой системы:

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

find . -type d -name «моя_папка» -exec rm -rf <> \;

Подробнее про команду find смотрите в отдельной статье. Если кратко, то -type d указывает, что мы ищем только папки, а параметром -name задаем имя нужных папок. Затем с помощью параметра -exec мы выполняем команду удаления. Таким же образом можно удалить только пустые папки, например, в домашней папке:

find ~/ -empty -type d -delete

Как видите, в find необязательно выполнять отдельную команду, утилита тоже умеет удалять. Вместо домашней папки, можно указать любой нужный вам путь:

find /var/www/public_html/ -empty -type d -delete

Перед удалением вы можете подсчитать количество пустых папок:

find /var/www/public_html/ -empty -type d | wc -l

Другой способ удалить папку linux с помощью find — использовать в дополнение утилиту xargs. Она позволяет подставить аргументы в нужное место. Например:

find ~/ -type f -empty -print0 | xargs -0 -I <> /bin/rm «<>«

Опция -print0 выводит полный путь к найденному файлу в стандартный вывод, а затем мы передаем его команде xargs. Опция -0 указывает, что нужно считать символом завершения строки \0, а -I — что нужно использовать команду из стандартного ввода.

Если вы хотите полностью удалить папку Linux, так, чтобы ее невозможно было восстановить, то можно использовать утилиту wipe. Она не поставляется по умолчанию, но вы можете ее достаточно просто установить:

Теперь для удаления каталога Linux используйте такую команду:

Опция -r указывает, что нужно удалять рекурсивно все под папки, -f — включает автоматическое удаление, без запроса пользователя, а -i показывает прогресс удаления. Так вы можете удалить все файлы в папке linux без возможности их восстановления поскольку все место на диске где они были будет несколько раз затерто.

Выводы

В этой статье мы рассмотрели как удалить каталог linux, а также как удалить все файлы в папке linux без возможности их будущего восстановления. Как видите, это очень просто, достаточно набрать несколько команд в терминале. Если у вас остались вопросы, спрашивайте в комментариях!

Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.

Источник

Оцените статью
Adblock
detector