Linux удалить файлы во вложенных папках

Как удалить файл в 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 ». Здесь же мы будем рассматривать самые простые и часто используемые опции.

Читайте также:  Kali linux 64 бит

Синтаксис команды « 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. Через файловый менеджер зайдите в файлы, которые вы хотите удалить.

Читайте также:  Прервать выполнение команды linux

2. Удерживая нажатой левую кнопку мыши, отметьте файлы, которые нужно удалить.

При нажатой левой кнопке мыши выберите файлы, которые необходимо удалить.

3. Щелчок правой кнопкой мыши на одном из файлов вызовет контекстное меню. В зависимости от среды рабочего стола вы найдете опцию «Отправить в корзину«, «Удалить файлы» или «Удалить«.

Через контекстное меню можно удалить файлы Linux.

Совет: Для удаления файлов в 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 — «<>» \;

Читайте также:  Linux посмотреть сетевое оборудование

Может есть ещё какие нибудь способы??

Жестоко

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 во всех подпапках проекта)

Источник

Оцените статью
Adblock
detector