10 примеров команды ‘rm’ для начинающих

Автор mordeniuss

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

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

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



Пример #1: Удаление файла

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

[mordeniuss@cloud ~]$ rm linuxstufff.log
[mordeniuss@cloud ~]$

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

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

# rm {file1} {file2}] {file3} {file4}
[mordeniuss@cloud ~]$ rm file1.txt file2.txt file3.txt file4.txt
[mordeniuss@cloud ~]$

Пример #2: Интерактивное удаление файлов

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

[mordeniuss@cloud ~]$ rm -i linuxstufff.log 
rm: remove regular file ‘linuxstufff.log’? y
[mordeniuss@cloud ~]$

Пример #3: Удаление пустой директории

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

[mordeniuss@cloud ~]$ ls -R appdata/
appdata/:
[mordeniuss@cloud ~]$ rm -d appdata/
[mordeniuss@cloud ~]$

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

[mordeniuss@cloud ~]$ ls -R appdata/
appdata/:
[mordeniuss@cloud ~]$ rmdir appdata
[mordeniuss@cloud ~]$

Пример #4: Рекурсивное удаление директорий

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

[mordeniuss@cloud ~]$ 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
[mordeniuss@cloud ~]$ rm -r dbstore/
[mordeniuss@cloud ~]$

Пример #5: Удаление файлов и подкаталогов интерактивно

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

[mordeniuss@cloud ~]$ 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
[mordeniuss@cloud ~]$

Пример #6: Принудительное удаление файлов

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

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

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

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

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

[mordeniuss@cloud ~]$ rm -f tech.txt 
[mordeniuss@cloud ~]$

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

[mordeniuss@cloud ~]$ rm -f nonexist.txt
[mordeniuss@cloud ~]$

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

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

[mordeniuss@cloud ~]$ ls -ld /home/mordeniuss/location/
drwxrwxr-x. 2 root root 29 Mar 27 00:43 /home/mordeniuss/location/

[mordeniuss@cloud ~]$ ls -l /home/mordeniuss/location/db_stuff 
-rw-rw-r--. 1 mordeniuss mordeniuss 17 Mar 27 00:43 /home/mordeniuss/location/db_stuff

[mordeniuss@cloud ~]$ rm -f /home/mordeniuss/location/db_stuff
rm: cannot remove ‘/home/mordeniuss/location/db_stuff’: Permission denied
[mordeniuss@cloud ~]$

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

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

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

[mordeniuss@cloud ~]$ 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
[mordeniuss@cloud ~]$ rm -I linux_store/app*
rm: remove 5 arguments? y
[mordeniuss@cloud ~]$

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

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

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

[mordeniuss@cloud linux_store]$ pwd
/home/mordeniuss/linux_store
[mordeniuss@cloud 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
........................................
[mordeniuss@cloud linux_store]$ 
[mordeniuss@cloud linux_store]$ rm -f log{1..5}.txt
[mordeniuss@cloud linux_store]$

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

[mordeniuss@cloud linux_store]$ rm -f *.txt
[mordeniuss@cloud linux_store]$

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

[mordeniuss@cloud linux_store]$ rm -f *.???
[mordeniuss@cloud linux_store]$



Пример #9: Удаление большого количества файлов

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

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

[mordeniuss@cloud linux_store]$ ls -l | wc -l
300001
[mordeniuss@cloud linux_store]$ rm *.log
-bash: /bin/rm: Argument list too long
[mordeniuss@cloud linux_store]$

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

[mordeniuss@cloud ~]$ find ~/linux_store/ -type f -exec rm {} \;
[mordeniuss@cloud ~]$

Пример #10: Удаление файлов, начинающихся с дефиса (-)

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

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

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

[mordeniuss@cloud linux_store]$ rm -- \ -store 
[mordeniuss@cloud linux_store]$

ИЛИ

[mordeniuss@cloud linux_store]$ rm ./\ -store 
[mordeniuss@cloud linux_store]$

Похожие посты

Оставьте комментарий