- Как удалить файл в Linux через терминал
- Удаление файлов с помощью rm
- Синтаксис и опции команды rm
- Поиск и удаление файлов с помощью find
- Как легко удалить файлы в Linux
- Удаление файлов из Linux с помощью файлового менеджера
- Удаление файлов из Linux через терминал
- Удаление файлов в Linux: особенности работы с командой «rm
- Удаление одного файла Linux
- Удаление нескольких файлов в Linux
- Удаление файлов Linux определенного формата
- Удаление определенных типов файлов
- Удалить все файлы в заданной папке
- eye_ru
- Жестоко
- Re: Жестоко
- Спасибо!
- Re: Спасибо!
- xargs xargs xargs
Как удалить файл в Linux через терминал
В операционной системе Linux практически все операции можно выполнить с помощью терминала. Для этого в системе предусмотрено мужество очень мощных и гибких команд и утилит, которые позволяют очень тонко управлять системой.
В этой инструкции мы рассмотрим удаление файлов. Это типичная и очень простая процедура, выполнять которую должен уметь любой пользователь. Здесь вы узнаете, как удалить файл в Linux через терминал и какие команды для этого понадобятся. Статья будет актуальной для любого дистрибутива Linux, например, Ubuntu Linux, Debian и т. д.
Удаление файлов с помощью rm
Для того чтобы удалить файл в Linux через терминал необходимо использовать команду « rm » (от английского «remove»). Данная команда удаляет все указанные ей файлы, но по умолчанию не удаляет каталоги. Чтобы позволить команде « rm » удалять каталоги нужно добавить опцию « -r » или « -R ». Более подробно об этом во второй половине статьи.
Также нужно отметить, что команда « rm » не выполняет физическое удаление данных, вместо этого указанные файлы просто удаляются из файловой системы, а занимаемое ими место маркируется как свободное. Это означает, что после удаления данные остаются на диске и пока они не будут перезаписаны другими данными, их можно будет восстановить с помощью специальных программ. Для физического удаления данных с перезаписью диска следует использовать команду « shred ».
В общем случае для удаления файла в Linux через терминал достаточно просто ввести в терминал « rm » и указать имя документа. Например, для того чтобы удалить « file1.txt » из текущего каталога нужно выполнить вот такую команду:
Если удаляемый файл находится не в текущем каталоге, то в терминале нужно указать полный путь. Например, это может выглядеть вот так:
При необходимости, с помощью команды « rm » можно удалить сразу несколько файлов. Для этого просто введите « rm » и перечислите имена через пробел, например:
Для удаления большого количества похожих файлов можно использовать маски. Например, чтобы удалить все документы с расширением txt нужно выполнить вот такую команду:
Также маску можно использовать для удаления вообще всех файлов. Например, чтобы удалить все файлы в текущей папке нужно выполнить:
Аналогичным способом можно удалить все файлы в определенной папке:
Главное, соблюдать осторожность, так как при использовании масок можно удалить что-то лишнее.
Синтаксис и опции команды rm
Команда « rm » имеет множество опций, что позволяет очень тонко управлять процессом удаления файлов. Вы можете изучить все доступные опции если введете в терминал Linux команду « man rm ». Здесь же мы будем рассматривать самые простые и часто используемые опции.
Синтаксис команды « rm » выглядит следующим образом:
Разберем основные опции команды rm:
-f, --force Игнорировать несуществующие файлы и не требовать подтверждения перед удалением. -i Требовать подтверждения перед каждым удалением. -I Запрашивать подтверждение один раз перед удалением более трех файлов или при рекурсивном удалении. -r, -R, --recursive Рекурсивное удаление каталогов и их содержимого. -v, --verbose Вывод подробной информации о процессе. --help Вывод справочной информации о команде.
Теперь разберем некоторые опции, которые часто используются при удалении файлов в Linux через терминал. Например, очень часто возникает необходимость удалить папку вместе с всем содержимым. Для этого нужно использовать опцию «-r», которая включает рекурсивный обход папок. Например, для того чтобы удалить папку «folder1» и все ее содержимое нужно выполнить:
Если права доступа к файлу разрешают только чтение, то в терминале Linux появится запрос подтверждения, и чтобы продолжить вам нужно будет ввести букву « y » (от англ. «yes»).
Чтобы избежать такой ситуации и удалять все файлы без предупреждения нужно использовать опцию « -f ». Например:
Не редко возникает необходимость удалить папку вместе со всеми файлами и без запросов на подтверждение. В этом случае нужно комбинировать опции « -r » и « -f ». В результате команда выглядит вот так:
Если вы, наоборот, хотите каждый раз получать запрос подтверждения, то команду « rm » нужно выполнять с опцией « -i ». Например, для того чтобы удалить все файлы в текущем каталоге с запросом подтверждения нужно выполнить:
Также бывает полезной опция « -v ». При ее использовании в терминале будет появляться подробная информация о выполняемых действиях. Например, для того чтобы удалить все файлы в текущем каталоге и вывести информацию в терминал нужно выполнить:
Также вывод информации можно перенаправить в файл. Для этого после команды нужно использовать оператор перенаправления вывода ( > ) и указать название файла. Например:
Естественно все эти опции можно комбинировать, в зависимости от ваших задач.
Поиск и удаление файлов с помощью find
Также нужно отметить, что существуют и альтернативные способы удаления файлов. Например, вы можете использовать команду поиска « find ». Команда « find » будет полезна в тех случаях, когда вам нужно удалить определенные файлы в целом ряде папок.
Например, для того чтобы найти и удалить все txt-файлы в текущей и во всех вложенных папках можно выполнить вот такую команду:
find . -type f -name "*.txt" -delete
Чтобы узнать больше об использовании « find » введите в терминал команду « man find ».
Как легко удалить файлы в Linux
В Linux вы можете удалить отдельные файлы, несколько файлов или целые каталоги. Однако этот процесс несколько отличается от привычной Windows. Мы покажем вам различные способы как легко удалить файлы в Linux.
Удаление файлов из Linux с помощью файлового менеджера
В зависимости от среды рабочего стола, вы можете найти в своей системе Nautilus, Dolphin или другие файловые менеджеры для Linux. С помощью этих стандартных файловых менеджеров вы можете удалять файлы в Linux всего за несколько шагов.
1. Через файловый менеджер зайдите в файлы, которые вы хотите удалить.
2. Удерживая нажатой левую кнопку мыши, отметьте файлы, которые нужно удалить.
3. Щелчок правой кнопкой мыши на одном из файлов вызовет контекстное меню. В зависимости от среды рабочего стола вы найдете опцию «Отправить в корзину«, «Удалить файлы» или «Удалить«.
Совет: Для удаления файлов в Linux вместо контекстного меню можно использовать клавишу «Delete«.
Удаление файлов из Linux через терминал
Учитывая большое количество команд в терминале Linux, следует ожидать, что командная строка также может быть использована для удаления файлов Linux.
1. Откройте файловый менеджер и найдите файлы, которые вы хотите удалить. Вы также можете использовать команду «cd /путь/к/папке» для перехода к файлам непосредственно из терминала.
2. Или войдите в папку, далее щелкните правой кнопкой мыши на окне, чтобы открыть контекстное меню. Выберите «Открыть в терминале«.
3. С помощью команды «rm» (сокращение от remove) вы можете удалить один или несколько файлов из Linux.
Удаление файлов в Linux: особенности работы с командой «rm
В зависимости от того, хотите ли вы удалить один или несколько файлов Linux или непосредственно все файлы определенного типа. Вам придется использовать команду «rm» следующими способами:
Удаление одного файла Linux
С помощью команды «rm«, за которой следует имя файла, отдельные файлы могут быть быстро и легко удалены с помощью терминала.
Удаление нескольких файлов в Linux
Чтобы удалить несколько файлов, пропишите все имена файлов, разделенные пробелом, после команды «rm».
rm имя_файла.расширение имя_файла.расширение
Удаление файлов Linux определенного формата
Помимо удаления одного или нескольких файлов из Linux, можно удалять конкретные файлы с определенным именем:
Удаление определенных типов файлов
Если в папке находятся файлы разных типов и вы хотите удалить все файлы с определенным расширением (например, .pdf, .ods или .doc), введите следующее после команды «rm»:
В этом случае все файлы с расширением .ods будут удалены.
Удалить все файлы в заданной папке
Если вы хотите удалить файлы и вложенные папки из определенной папки, введите в терминале следующую команду:
В этом случае будут удалены все файлы в папке «Папка», но не сама папка. Также можно удалить каталог Linux, включая все содержащиеся в нем файлы.
Ну вот и все, теперь вы можете удалить файл в терминале Linux.
eye_ru
Казалось бы, простая задачка. В Windows все просто — del /S smth.*, готово. Все файлы по маске smth.* в текущей директории и ниже будут удалены.
В Linux чуток сложнее.
Есть в Linux команда rm, но она дальше текущей директории не идет, зато прекрасно понимает полный путь к файлу, чем мы и воспользуемся.
Получить список всех файлов в текущей директории и поддиректориях по маске позволяет команда find -name «smth.*», ее вывод то нам и нужен. Осталось его перенаправить на вход команды rm. Это можно сделать 5ю способами:
xargs — формирует команду rm с аргументами считанными из стандартного ввода на которой мы подадим вывод команды find. нюансы использования описаны тут
1. find /path/to/dir -type f -name ‘smth*’ -print0 | xargs -0 rm;
exec — перенапаравляем вывод команды find на вход команды rm
2. find -name ‘smth.*’ -exec rm <> \;
UPD.
find — самый рульный способ
3. find -name ‘smth.*’ -delete;
UPD.
Способы подсказанные камрадом goodvin
4. find . -type f -name ‘smth*’ -delete
5. find . -type f -name ‘smth’ -exec rm -f — «<>» \;
Может есть ещё какие нибудь способы??
Жестоко
Re: Жестоко
> Может есть ещё какие нибудь способы?
В *nix все просто — rm -r smth.*, готово. Все файлы по маске smth.* в текущей директории и ниже будут удалены.
права то на удаление есть?
rm -rvf *smth*
rr@pc:~/test$ ls -R
.:
smth.123 smth.1231 smth.12311 -smth sd.1231 smth sd.1231 test
./test:
smth.123 smth.1231 smth.12311 -smth ss.111 smth ss.111
rr@pc:~/test$ rm -rvf *smth*
rm: invalid option — s
Try `rm ./’-smth sd.1231» to remove the file `-smth sd.1231′.
Try `rm —help’ for more information.
rr@pc:~/test$ ls -R
.:
smth.123 smth.1231 smth.12311 -smth sd.1231 smth sd.1231 test
./test:
smth.123 smth.1231 smth.12311 -smth ss.111 smth ss.111
rr@pc:~/test$
rm — *smth*
rr@pc:~/test$ ls -R
.:
gentest.sh smth.123 smth.1231 smth.12311 -smth sd.1231 smth sd.1231 test
./test:
smth.123 smth.1231 smth.12311 -smth ss.111 smth ss.111
rr@pc:~/test$ rm — *smth*
rr@pc:~/test$ ls -R
.:
test
./test:
smth.123 smth.1231 smth.12311 -smth ss.111 smth ss.111
rr@pc:~/test$
У нас в конторе один из любимейших вопросов на собеседовании: как удалить сто тыщ мильонов файлов с заранее неизвестными названиями в одной директории?
Ответы типа «rm -f /path/to/dir/*» не подходят, поскольку звездочка преобразовывается в список файлов, удовлетворяющих wildmat’у (в данном случае — все файлы), а у шелла есть ограничение на размер командной строки.
Тот же результат будет у «find /path/to/dir -type f| xargs rm», поскольку, во-первых xargs преобразует весь stdin в одну строку (try: «find /tmp |xargs echo rm»), во-вторых, в именах файлов могут содержаться пробелы, которые не эскейпятся, в-третьих, названия файлов могут начинаться на -, из-за чего rm воспримет имя файла как неизвестную опцию и упадет. Ну и ограничение на длину команды никто не отменял. Первые три проблемы обходятся так:
find /path/to/dir -type f -print0 |xargs -0 rm —
Опция -print0 какбэ говорит команде find, что в качестве разделителей нужно использовать нулевой символ вместо перевода строки, а -0 указывает xargs, что разделитель — не пробел, а все тот же нулевой символ.
Поэтому правильным ответом считается команда
find . -type f -name ‘smth*’ -delete
или
find . -type f -name ‘smth’ -exec rm -f — «<>» \;
Ну или простенький цикл:
for f in «`find . -type f -name ‘smth*’`» ; do rm «$f»; done
по количеству кавычек в котором можно еще и определить степень знания особенностей использования шелла 🙂
Спасибо!
Большое спасибо за понятный мануал, очень помогло.
Второй способ, кстати, не работает — пишет «missing arguments for -exec». Система Ubuntu 8.10, ядро 2.6.27
Re: Спасибо!
И, наконец, вот команда, которая будет выполнена для каждого файла:
Здесь вы также должны дезактивировать знак ;, в противном случае командный процессор интерпретирует его как разделитель команд. Если вы забудете сделать это, find пожалуется, что для -exec отсутствует аргумент.
xargs xargs xargs
Спасибо за пост, узнал про xargs. Все ж намного проще:
find . -name .svn|xargs rm -rf
(удаление папки .svn во всех подпапках проекта)