Эта небольшая заметка ориентированна на совсем начинающих. Сегодня мы рассмотрим как удалить файл в терминале Linux. Для более опытных пользователей это элементарная задача, но новичкам надо с чего-то начинать. И знать как работать с файлами в консоли очень важно. К тому же удаление из консоли дает много преимуществ и большую гибкость. Например с помощью специальной команды вы можете полностью стереть файл с жесткого диска, так что его уже ни за что невозможно будет восстановить или одной командой с помощью спец символов, условий или регулярных выражений удалить сотни ненужных файлов в одном каталоге или подкаталогох соответствующих определенному критерию.
В Linux для удаления файлов предусмотрена стандартная утилита rm. Как и все остальные стандартные утилиты в имени rm тоже заложена определенная идея. Это сокращение от английского слова Remove.
Чтобы удалить файл достаточно передать в параметрах команде адрес файла в файловой системе:
$ rm /home/user/file
Чтобы удалить все файлы начинающиеся на слово file можно использовать спец символ *, означает любой символ в любом количестве:
$ rm /home/user/file*
С такими командами нужно быть особенно осторожным, чтобы не удалить ничего лишнего. В утилиты есть опция -i, которая заставляет программу спрашивать пользователя перед тем как удалить каждый файл:
$ rm /home/user/file*
rm: удалить пустой обычный файл «/home/user/file»?
Если файлов очень много, вы уверены в правильности команды и отвечать каждый раз y неудобно, есть противоположная опция — f. Будут удалены все файлы без вопросов:
$ rm -f /home/user/file*
Для удаления директорий, в месте с файлами и поддиректориями используется опция -R, например:
$ rm -Rf /home/user/dir
Будет удалено все что находиться в папке dir, и эта папка. Только будьте бдительны, чтобы не получился знаменитый патч Брамина:
$ rm -Rf /*
Не стоит выполнять эту команду в своей системе, как видите, она удаляет все файлы в файловой системе Linux.
Удалять файлы также можно с помощью утилиты find. Общий синтаксис find:
$ find папка критерий действие
Например мы хотим удалить файл по имени:
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 удаляется только ссылка на файл, само же содержимой файла по прежнему находиться на диске, пока система не перезапишет его новыми данными, а пока этого не случится файл можно легко восстановить. Принцип действия утилиты такой — после удаления файла, его место на диске несколько раз перезаписывается.
$ shred /home/user/file
Опцией -n — можно указать количество перезаписей диска, по умолчанию используется 3. А если указать опцию -z программа при последней перезаписи запишет все нулями чтобы скрыть, уничтожение файла.