береженого кольт бережет
береженого кольт бережет

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

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

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

# rm <опции> {файлы}

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

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

$ rm linux.log

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

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

$ rm {file1} {file2}] {file3} {file4}
$ 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‘.

$ rm -f tech.txt 

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

$ rm -f nonexist.txt

Примечание: опция -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 перед удалением более трех файлов или рекурсивным удалением запрашивает подтверждение.

Предположим, я хочу удалить все файлы журнала, которые начинаются с имени «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{1..5}.txt

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

$ rm -f *.txt

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

$rm -f *.???

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

Если вы пытаетесь удалить большое количество файлов с помощью команды 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