- Как удалить файл через терминал Linux
- Удаление файлов в Linux
- Выводы
- Introduction
- Commands for deleting files
- Options
- Precautions
- See Also
- Примеры команды RM Linux
- Удаление файла
- Интерактивное удаление файлов
- Удаление пустой директории
- Рекурсивное удаление директорий
- Удаление файлов и подкаталогов интерактивно
- Принудительное удаление файлов
- Проверка при удалении более 3 файлов или рекурсивном удаление
- Регулярные выражения в команде rm
- Удаление большого количества файлов
- Удаление файлов, начинающихся с дефиса (-)
Как удалить файл через терминал Linux
Эта небольшая заметка ориентирована на совсем начинающих. Сегодня мы рассмотрим как удалить файл linux через терминал. Для более опытных пользователей это элементарная задача, но новичкам надо с чего-то начинать. Знать как работать с файлами в консоли очень важно.
К тому же удаление из консоли дает много преимуществ и большую гибкость. Например, с помощью специальной команды вы можете полностью стереть файл с жесткого диска, так что его уже ни за что невозможно будет восстановить или одной командой с помощью специальных символов, условий или регулярных выражений удалить сотни ненужных файлов в одном каталоге или подкаталогох соответствующих определенному критерию.
В Linux для удаления файлов предусмотрена стандартная утилита rm. Как и все остальные, стандартные утилиты в имени rm тоже заложена определенная идея. Это сокращение от английского слова Remove.
Удаление файлов в Linux
Чтобы удалить файл linux достаточно передать в параметрах команде адрес файла в файловой системе:
Чтобы удалить все файлы, начинающиеся на слово file можно использовать специальный символ *, означает любой символ в любом количестве:
Эта команда удаления файла в linux должна использоваться очень осторожно, чтобы не удалить ничего лишнего. В утилите есть опция -i, которая заставляет программу спрашивать пользователя перед тем, как удалить файл linux:
rm: удалить пустой обычный файл «/home/user/file»?
Если файлов очень много, вы уверены в правильности команды и отвечать каждый раз y неудобно, есть противоположная опция — f. Будут удалены все файлы без вопросов:
Для удаления директорий, вместе с файлами и поддиректориями используется опция -R, например:
Будет удалено все что находиться в папке dir, и эта папка. Только будьте бдительны, чтобы не получился знаменитый патч Бармина:
Не стоит выполнять эту команду в своей системе, как видите, она удаляет все файлы в файловой системе Linux.
Удаление файла в linux также возможно с помощью утилиты find. Общий синтаксис find:
find папка критерий действие
Например, мы хотим удалить файл linux по имени:
find . -type f -name «file» -exec rm -f <> \;
Будут найдены все файлы с именем file в текущей папке и для них вызвана команда rm -f. Можно не вызывать стороннюю утилиту, а использовать действие delete:
find . -type f -name «file» -delete
Удалить все файлы в текущей директории, соответствующие определенному регулярному выражению:
find . -regex ‘\./[a-f0-9\-]\.bak’ — delete
Или удалить файлы старше определенного строка, может быть полезно для удаления старых логов:
find /path/to/files* -mtime +5 -exec rm <> \;
Будет выполнено удаление файлов через терминал все файлы в папке старше 5-ти дней.
Чтобы полностью стереть файл, без возможности восстановления используйте команду shred. Во время удаления файлов с помощью утилиты rm удаляется только ссылка на файл, само же содержимой файла по-прежнему находиться на диске, пока система не перезапишет его новыми данными, а пока этого не случится файл можно легко восстановить. Принцип действия утилиты такой — после удаления файла, его место на диске несколько раз перезаписывается.
Опцией -n — можно указать количество перезаписей диска, по умолчанию используется 3. А если указать опцию -z программа при последней перезаписи запишет все нулями чтобы скрыть, уничтожение файла.
Выводы
Вот и все. Теперь вы знаете как удалить файл в Ubuntu, как видите, делать это не так уж сложно. Если у вас остались вопросы, пишите в комментариях!
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.
Introduction
This page describes how to delete files through terminal.
It is possible, though difficult, to recover files deleted through rm. See DataRecovery. If you want to permanently delete a file use shred.
Commands for deleting files
The terminal command for deleting file(s) is rm. The general format of this command is rm [-f|i|I|q|R|r|v] file.
rm removes a file if you specify a correct path for it and if you don’t, then it displays an error message and move on to the next file. Sometimes you may not have the write permissions for a file, in that case it asks you for confirmation. Type yes if you want to delete it.
Options
- -f — deletes read-only files immediately without any confirmation.If both -f and -i are used then the one which appears last in the terminal is used by rm.
- -i — prompts for confirmation before deleting every file beforing entering a sub-directory if used with -R or -r. If both -f and -i are used then the one which appears last in the terminal is used by rm.
- -q — suppresses all the warning messages however error messages are still displayed. However the exit status is modified in case of any errors.
- -R — means delete recursively and is used to delete the directory tree starting at the directory specified i.e. it deletes the specified directory along with its sub-directory and files.
- -r — same as -R.
- -v — displays the file names on the output as they are being processed.
- -I — prompts everytime when an attempt is made to delete for than 3 files at a time or while removing recursively.
Precautions
These precautions are to help you avoid dangerous commands. You should not execute them!
- Never type sudo rm -R / or sudo rm -r / as it deletes all the data in the root directory and will delete the data of all the mounted volumes until you want to wipe of everything from your system.
- sudo rm -f /* also does blunders with your system.
See Also
DeletingFiles (последним исправлял пользователь ckimes 2017-09-03 16:40:24)
The material on this wiki is available under a free license, see Copyright / License for details
You can contribute to this wiki, see Wiki Guide for details
Примеры команды RM Linux
rm означает «remove», как следует из названия, команда rm используется для удаления файлов и каталогов в UNIX-подобной операционной системе. Если вы новичок в Linux, вы должны быть очень осторожны при запуске команды rm, потому что, как только вы удалите файлы, вы не сможете восстановить содержимое файлов и каталогов. Хотя есть некоторые инструменты и команды, с помощью которых можно восстановить удаленные файлы, но для этого вам нужны экспертные навыки.
В этом посте я продемонстрирую 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 перед удалением более трех файлов или рекурсивным удалением запрашивает подтверждение.
Предположим, я хочу удалить все файлы журнала, которые начинаются с имени «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