Примеры команды 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.logdrwxrwxr-x. 2 mordeniuss mordeniuss 6 Mar 26 23:59 servicedbstore/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.logdrwxrwxr-x. 2 mordeniuss mordeniuss 6 Mar 27 00:02 servicedbstore/service:total 0[mordeniuss@cloud ~]$ rm -ri dbstore/rm: descend into directory ‘dbstore/’? yrm: remove regular empty file ‘dbstore/file1.log’? yrm: remove regular empty file ‘dbstore/file2.log’? yrm: remove regular empty file ‘dbstore/file3.log’? yrm: remove directory ‘dbstore/service’? yrm: 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_stuffrm: 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$ lltotal 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 -l300001$ rm *.log-bash: /bin/rm: Argument list too long
Чтобы решить эту проблему, используйте команду:
$ find ~/linux_store/ -type f -exec rm {} \;
Удаление файлов, начинающихся с дефиса (-)
Давайте предположим, что у нас есть файл с именем ‘-store‘ в нашем текущем каталоге, и мы хотим удалить этот файл.
$ lltotal 0-rw-rw-r--. 1 mordeniuss mordeniuss 0 Mar 27 02:05 -store$ rm -storerm: invalid option -- 's'Try 'rm --help' for more information.[mordeniuss@cloud linux_store]$
Удалить этот файл можно с помощью команд ниже.
$ rm -- \ -store ИЛИ$ rm ./\ -store