Эта небольшая заметка ориентирована на совсем начинающих. Сегодня мы рассмотрим как удалить файл linux через терминал. Для более опытных пользователей это элементарная задача, но новичкам надо с чего-то начинать. Знать как работать с файлами в консоли очень важно.
К тому же удаление из консоли дает много преимуществ и большую гибкость. Например, с помощью специальной команды вы можете полностью стереть файл с жесткого диска, так что его уже ни за что невозможно будет восстановить или одной командой с помощью специальных символов, условий или регулярных выражений удалить сотни ненужных файлов в одном каталоге или подкаталогох соответствующих определенному критерию.
В Linux для удаления файлов предусмотрена стандартная утилита rm. Как и все остальные, стандартные утилиты в имени rm тоже заложена определенная идея. Это сокращение от английского слова Remove.
Удаление файлов в Linux
Чтобы удалить файл linux достаточно передать в параметрах команде адрес файла в файловой системе:
rm /home/user/file
Чтобы удалить все файлы, начинающиеся на слово file можно использовать специальный символ *, означает любой символ в любом количестве:
rm /home/user/file*
Команда удаления файла в Linux должна использоваться очень осторожно, чтобы не удалить ничего лишнего. В утилите есть опция -i, которая заставляет программу спрашивать подтверждение у пользователя перед тем, как удалить файл Linux:
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 по имени:
Будут найдены все файлы с именем file в текущей папке и для них вызвана команда rm -f. Можно не вызывать стороннюю утилиту, а использовать действие delete:
Удалить все файлы в текущей директории, соответствующие определенному регулярному выражению:
Или удалить файлы старше определенного строка, может быть полезно для удаления старых логов:
find /path/to/files* -mtime +5 -exec rm {} \;
Будет выполнено удаление файлов через терминал все файлы в папке старше 5-ти дней.
Чтобы полностью стереть файл, без возможности восстановления используйте команду shred. Во время удаления файлов с помощью утилиты rm удаляется только ссылка на файл, само же содержимой файла по-прежнему находиться на диске, пока система не перезапишет его новыми данными, а пока этого не случится файл можно легко восстановить. Принцип действия утилиты такой - после удаления файла, его место на диске несколько раз перезаписывается.
shred /home/user/file
Опцией -n - можно указать количество перезаписей диска, по умолчанию используется 3. А если указать опцию -z программа при последней перезаписи запишет все нулями чтобы скрыть, уничтожение файла.
Выводы
Вот и все. Теперь вы знаете как удалить файл в Ubuntu, как видите, делать это не так уж сложно. Если у вас остались вопросы, пишите в комментариях!
Как бы да, но нет...
)))
Все вроди хорошо рассказано, но команды удаляющей файлы в Unix нет. Есть команда удаляющая жесткую ссылку. А это две большие разницы...
)))
Поправьте, пожалуйста. А лучше допишите, в начале текста, что используя команду rm вы удаляете одну из жестких ссылок. И только когда ссылок на данные не будет , тогда данные будут удалены. В иных случаях данные останутся невредимыми...
С одной стороны так, да, но не совсем. Это внутренние особенности работы файловой системы Unix. Если будет две ссылки то пользователь будет знать что у него есть два файла, а потому чтобы полностью стереть данные нужно удалить оба файла. Но да о ссылках в статье надо бы упомянуть. Спасибо.
Дорогие друзья! Помогите чайнику пожалуйста: есть команда:
sudo find /media/hdd -type f -size -500k -delete
вручную работает и делает все как надо, но не хочет работать
автоматически из /etc/crontab.
Все права на папку и файлы установлены.
Запускайте sudo crontab -e, а в самой команде sudo писать не нужно.
Уважаемый admin, подскажите тогда пожалуйста как правильно прописать мою команду в файле crontab. С датой и временем все понятно. Так же rm и mv выполняются четко. Большое спасибо.
$ sudo crontab -e
(тут время) /usr/bin/find /media/hdd -type f -size -500k -delete
Пребольшое спасибо. Теперь я не чайник.
Добрый день. Есть CentOS.В ней нужно удалить удалить подкаталоги с файлами (подкаталоги и файлы старше определенного времени). Вот такая команда ничего видимого не делает find /var/backup/file_bkp/mail_files/ -type d -mtime +3 -exec rm -rfv {} \;. Уже не знаю что и делать. /mail_files/
в этом каталоге еще много подкаталогов и файлов. Создаются каждый день последние 2 -3 каталога нужно оставлять. Подскажите, плиз, как удалить каталоги, подкаталоги и файлы и оставлять последние ?
Если поменять значение на -3 то скрипт удаляет последние 4 бэкапа.
find /var/backup/ -name "*.*" -type f -mtime +3 -print -delete удаляет все файлы старше трех дней
find /var/backup/ -type d -empty -print -delete удаляет пустые директории
Затаскиваем все в CRON. Проверено работает в CentOS.
ой, не в ту тему
Спасибо за материал, подскажите, как можно удалить все файла в каталоге за исключением некоторых?
sudo rm vmware/network/network.dpkg
вываливается с ошибкой - rm: невозможно удалить 'vmware/network/network.dpkg': Это не каталог
Здравствуйте,
как удалить ВСЕ файлы с определенным именем из ВСЕЙ системы?
Например, я хочу удалить все файлы по имени copyright.
Как удалить только файлы из конкретной папки? пытаюсь командами, пишет директория не найдена
rm -f /полный/путь/к/dir/*
Админ, вы ошиблись! Опцию -r надо писать с маленькой буквы. И тот патч выполняется так: rm -rf /
(!!!)Новички изучающие линукс, не думайте даже выполнять команду rm -rf /
Подскажите, пожалуйста, а как в каталоге удалить кучу мелких файлов с похожими названиями, оставив свежие. Файлы вида backup-name-back-****-name-yyyymmdd-h:mm, где
"backup-name-back-" присутствуют в названии каждого файла,
****- это любые цифры, уникальный номер файла бэкапа. Повторяются периодически. Задача - оставить одну копию такого бэкапа, самую свежую, а остальное удалить.
name- игнорировать, там любое значение,
yyyymmdd-h:mm - дата и время бэкапа.