Главная >> Команды >> Как удалить файл через терминал Linux

Как удалить файл через терминал Linux

Эта небольшая заметка ориентирована на совсем начинающих. Сегодня мы рассмотрим как удалить файл linux через терминал. Для более опытных пользователей это элементарная задача, но новичкам надо с чего-то начинать. Знать как работать с файлами в консоли очень важно.

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

В Linux для удаления файлов предусмотрена стандартная утилита rm. Как и все остальные, стандартные утилиты в имени rm тоже заложена определенная идея. Это сокращение от английского слова Remove.

Удаление файлов в Linux

Чтобы удалить файл linux достаточно передать в параметрах команде адрес файла в файловой системе:

rm /home/user/file

Чтобы удалить все файлы, начинающиеся на слово file можно использовать специальный символ *, означает любой символ в любом количестве:

rm /home/user/file*

Команда удаления файла в Linux должна использоваться очень осторожно, чтобы не удалить ничего лишнего. В утилите есть опция -i, которая заставляет программу спрашивать подтверждение у пользователя перед тем, как удалить файл Linux:

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.

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

shred /home/user/file

Опцией -n - можно указать количество перезаписей диска, по умолчанию используется 3. А если указать опцию -z программа при последней перезаписи запишет все нулями чтобы скрыть, уничтожение файла.

Выводы

Вот и все. Теперь вы знаете как удалить файл в Ubuntu, как видите, делать это не так уж сложно. Если у вас остались вопросы, пишите в комментариях!

19 комментариев к “Как удалить файл через терминал Linux”

  1. Как бы да, но нет...
    )))
    Все вроди хорошо рассказано, но команды удаляющей файлы в Unix нет. Есть команда удаляющая жесткую ссылку. А это две большие разницы...
    )))
    Поправьте, пожалуйста. А лучше допишите, в начале текста, что используя команду rm вы удаляете одну из жестких ссылок. И только когда ссылок на данные не будет , тогда данные будут удалены. В иных случаях данные останутся невредимыми...

    Ответить
    • С одной стороны так, да, но не совсем. Это внутренние особенности работы файловой системы Unix. Если будет две ссылки то пользователь будет знать что у него есть два файла, а потому чтобы полностью стереть данные нужно удалить оба файла. Но да о ссылках в статье надо бы упомянуть. Спасибо.

      Ответить
  2. Дорогие друзья! Помогите чайнику пожалуйста: есть команда:
    sudo find /media/hdd -type f -size -500k -delete
    вручную работает и делает все как надо, но не хочет работать
    автоматически из /etc/crontab.
    Все права на папку и файлы установлены.

    Ответить
  3. Добрый день. Есть CentOS.В ней нужно удалить удалить подкаталоги с файлами (подкаталоги и файлы старше определенного времени). Вот такая команда ничего видимого не делает find /var/backup/file_bkp/mail_files/ -type d -mtime +3 -exec rm -rfv {} \;. Уже не знаю что и делать. /mail_files/
    в этом каталоге еще много подкаталогов и файлов. Создаются каждый день последние 2 -3 каталога нужно оставлять. Подскажите, плиз, как удалить каталоги, подкаталоги и файлы и оставлять последние ?

    Ответить
  4. find /var/backup/ -name "*.*" -type f -mtime +3 -print -delete удаляет все файлы старше трех дней
    find /var/backup/ -type d -empty -print -delete удаляет пустые директории
    Затаскиваем все в CRON. Проверено работает в CentOS.

    Ответить
  5. Здравствуйте,
    как удалить ВСЕ файлы с определенным именем из ВСЕЙ системы?
    Например, я хочу удалить все файлы по имени copyright.

    Ответить
  6. Как удалить только файлы из конкретной папки? пытаюсь командами, пишет директория не найдена

    Ответить
  7. Подскажите, пожалуйста, а как в каталоге удалить кучу мелких файлов с похожими названиями, оставив свежие. Файлы вида backup-name-back-****-name-yyyymmdd-h:mm, где
    "backup-name-back-" присутствуют в названии каждого файла,
    ****- это любые цифры, уникальный номер файла бэкапа. Повторяются периодически. Задача - оставить одну копию такого бэкапа, самую свежую, а остальное удалить.
    name- игнорировать, там любое значение,
    yyyymmdd-h:mm - дата и время бэкапа.

    Ответить

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