Linux удалить файл по маске

Linux удалить файл по маске

подскажите как с помощью rm удалить все файлы с расширением *.txt ?
заранее спасибо.

Ответить | Правка | Cообщить модератору

Оглавление

  • Удалить файлы по маске *.txt, chainik, 11:49 , 13-Мрт-09, (1)
  • Удалить файлы по маске *.txt, djaarf, 14:28 , 13-Мрт-09, (2)
  • Удалить файлы по маске *.txt, Veon, 16:52 , 13-Мрт-09, (3)
    • Удалить файлы по маске *.txt, djaarf, 21:19 , 13-Мрт-09, (5)

Сообщения по теме [Сортировка по времени | RSS]

>доброго дня,
>
>подскажите как с помощью rm удалить все файлы с расширением *.txt ?
>
>заранее спасибо.

Откуда удалить? Со всех хостов инета?

1. «Удалить файлы по маске *.txt» + / –
Сообщение от chainik (??) on 13-Мрт-09, 11:49
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. «Удалить файлы по маске *.txt» + / –
Сообщение от djaarf (??) on 13-Мрт-09, 14:28

>доброго дня,
>
>подскажите как с помощью rm удалить все файлы с расширением *.txt ?
>
>заранее спасибо.

Чудесная утилита find тебе поможет.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

3. «Удалить файлы по маске *.txt» + / –
Сообщение от Veon (??) on 13-Мрт-09, 16:52

>доброго дня,
>
>подскажите как с помощью rm удалить все файлы с расширением *.txt ?
>
>заранее спасибо.

find /home/vasya -name «*.txt» | xargs rm

rm *.txt, rm -r *.txt

В зависимости от контретной ситуации

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

5. «Удалить файлы по маске *.txt» + / –
Сообщение от djaarf (??) on 13-Мрт-09, 21:19

>>доброго дня,
>>
>>подскажите как с помощью rm удалить все файлы с расширением *.txt ?
>>
>>заранее спасибо.
>
>find /home/vasya -name «*.txt» | xargs rm

Можно обойтись одним find
find path -type f -name «*.txt» -delete
>
>rm *.txt, rm -r *.txt
>
>В зависимости от контретной ситуации

Источник

bash удалить файлы по маске

Удаление старых файлов linux по маске чаще всего осуществляется следующим образом:

Веб-сервер указан для примера. Синтаксис очень прост — команда принудительно удалит все файлы с расширением .log в указанном каталоге, при этом удаление будет рекурсивным(-r — recursive) и подтверждения система при этом спрашивать не будет (-f — force).

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

Если rm -rf не помогает — удалять файлы следует в цикле for. Для каждого файла будет отдельная операция удаления и никаких ограничений системы здесь ожидать не приходится.

Синтаксис в простейшем случае может выглядеть так:

for f in /var/log/apache2/*.log; do rm «$f»; done

В цикл for можно добавить любую дополнительную логику.

Удаление старых файлов в Linux по Cron

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

# m h dom mon dow command

23 3 * * * find /var/www/web/sites/server-gu.ru/www/var/session/ -type f -mtime 7 -exec rm -f <> ;

В примере удаляются сессии РНР для сайта старше 7 дней.

В цикле то же самое можно сделать так:

for f in /tmp/logs/*.log

find $f -mtime +7 -exec rm <> ;

Приведенное выражение, как и любой другой цикл можно поместить в файл, сделать его исполняемым и с тем же успехом выполнять по Cron

Существует много решений в Linux по хранению бэкапов. Есть и готовые решения в виде программ, есть скрипты.
Так уже получилось, что бэкапы складывать в определенную папку задача не сложная (архиватор + cron) но как следить чтобы архивы не плодились? Опять же, есть готовые решения, но я предпочитаю самому управлять процессом. Простой скрип на bash решает проблему удаления старых бэкапов. Например, когда надо, чтобы хранились последние 5 копий, удаляются самые старые файлы бэкапов, а 5 новых остается.
Скрипт не блещет гениальными решениями, более того, я уверен, что это можно было сделать проще, но я как новичок в баше сделал это вот так:

Запускаю этот скрипт в кроне раз в неделю, например, с такими параметрами:

Это значит что самые старые файлы, начинающиеся с etc в папке /var/backup, кроме трёх самых свежих, будут удалены.

$filename.doc (Word) и

$filename.xslx (для Excel 2007/2010)
Предположим что файловая шара Samba находится у нас по адресу: /home/samba/public в которой уже лежат папки и файлы пользователей.
Тогда запрос принимает вид:

$*.*» -маска имени файла, если нужно удалить например: файлы mp3, то будет иметь вид «*.mp3», а если требуется удалять приложения, то «*.exe»
Данное задание можно засунуть в Cron и выполнять по ночам, когда сервер не используется.
Решение подходит для всех дистрибутивов Linux.

Источник

Удаление всех файлов определённого типа в каталоге

Есть каталог rare, в нём — куча подкаталогов и файлов. Нужно удалить все .m3u файлы. Делаю:

однако эта команда оставляет .m3u файлы, если в путях есть пробелы. Как заставить её обрабатывать пробелы?

Добавить двойные кавычки

Отличный совет, чувак. Я сейчас удалил половину каталога с музыкой.

Тогда экранированные двойные кавычки.

«Чуваком» будешь отца своего звать, а я тебе ответил на вопрос касательно классического метода, что решает эту задачу.
Не зря я написал именно так, как написал.

Ууу, кто-то только что спалил виртуала

Как такое могло получиться? Вы же не скопипастили «find -delete»?

/Music -type f -name «.txt» -delete в моем случае просто удалило все .txt файлы. С чего у вас удалилась музыка, если вы удаляете .m3u только?

Update:
Не нужно никаких костылей вроде xargs, find умеет удалять файлы с параметром -delete. Но для начала без него, проверьте, чтобы find искал все необходимые файлы, а потом уже дописывайте -delete, чтобы их удалить.

Источник

Команды для удаления большого количества файлов в Linux

Удаление старых файлов linux по маске чаще всего осуществляется следующим образом:

Веб-сервер указан для примера. Синтаксис очень прост — команда принудительно удалит все файлы с расширением .log в указанном каталоге, при этом удаление будет рекурсивным(-r — recursive) и подтверждения система при этом спрашивать не будет (-f — force).

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

Если rm -rf не помогает — удалять файлы следует в цикле for. Для каждого файла будет отдельная операция удаления и никаких ограничений системы здесь ожидать не приходится.

Синтаксис в простейшем случае может выглядеть так:

for f in /var/log/apache2/*.log; do rm «$f»; done

В цикл for можно добавить любую дополнительную логику.

Удаление старых файлов в Linux по Cron

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

# m h dom mon dow command

23 3 * * * find /var/www/web/sites/server-gu.ru/www/var/session/ -type f -mtime 7 -exec rm -f <> \;

В примере удаляются сессии РНР для сайта старше 7 дней.

В цикле то же самое можно сделать так:

for f in /tmp/logs/*.log

find $f -mtime +7 -exec rm <> \;

Приведенное выражение, как и любой другой цикл можно поместить в файл, сделать его исполняемым и с тем же успехом выполнять по Cron

Источник

Как удалить все файлы в каталоге, кроме одного

Иногда вам нужно удалить почти все файлы из каталога, но вы хотите сохранить один или несколько из них. Когда их много, идти по одному — утомительное занятие. Это не лучший вариант, есть способы значительно упростить работу в Linux и можно сразу избавиться от всех, что вам нужно.

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

И самое лучшее то, что вам не нужно будет устанавливать какую-либо программу, это легко сделать с помощью таких команд, как rm и find. То есть программы, которые уже предустановлены в любом дистрибутиве Linux. И, конечно же, метод будет основан на поиске шаблонов и использовании этих совпадений для удаления только того, что вы хотите.

Ну чтобы там исключить несколько альтернатив, Кто они такие…

Удалить файлы из каталога с помощью rm

Ну, чтобы использовать команда rm Чтобы избавиться от того, что вы чувствуете, вы должны знать перед некоторыми способами выявления закономерностей:

  • * (список шаблонов) — соответствует нулю или более вхождений указанных шаблонов
  • ? (список шаблонов) — соответствует нулю или одному вхождению указанных шаблонов
  • + (список шаблонов) — соответствует одному или нескольким экземплярам указанных шаблонов
  • @ (список шаблонов) — соответствует одному из указанных шаблонов
  • ! (список шаблонов) — соответствует чему угодно, кроме одного из заданных шаблонов

к активировать extglob Чтобы использовать их, вы должны сначала выполнить следующую команду:

глаз! Я не указываю это, но предполагается, что у вас есть разрешения на выполнение этих операций и что вы находитесь внутри этого каталога, когда выполняете команду rm. Будьте осторожны с этим, потому что, если вы запустите его по другому пути, вы можете удалить файлы, которые вам не нужны. То есть перед выполнением этих команд убедитесь, что вы вошли в нужный каталог с помощью cd.

Теперь вы можете использовать rm, чтобы удалить все, что захотите. Например, удалить все файлы из каталога, кроме тех, которые соответствуют имени «Lxa»:

Вы также можете указать два или более имен, которые вы не хотите удалять. Например, чтобы избежать удаления lxa и desdelinux:

Вы можете удалить все файлы, минус те, с расширением .mp3. Например:

В конце вы можете вернуться к отключить extglob:

Удалить файлы из каталога с помощью find

Другая альтернатива rm — используйте find, чтобы удалить то, что вам нравится. Вы можете использовать канал и xargs с rm или использовать параметр -delete для поиска. То есть общий синтаксис будет таким:

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

Вместо этого, если вы хотите добавить дополнительный узор, ты тоже мог бы. Например, предположим, что вы не хотите удалять файлы .pdf или .odt из каталога:

Конечно, вы можете сделать то же самое с | и xargs, как в предыдущем примере. Кстати, мы использовали -не отрицать, но вы можете удалить это, чтобы сделать его положительным, то есть удалить совпадающие шаблоны, а не исключать их.

Удалите файлы из каталога с помощью переменной GLOBIGNORE

Наконец, есть Другая альтернатива чтобы найти и rm, и он использует переменную среды, чтобы указать файлы, которые вы хотите удалить или исключить. Например, представьте, что вы хотите удалить все файлы в каталоге с именем Downloads, сохранив файлы .pdf, .mp3 и .mp4. В этом случае вы можете сделать следующее:

Содержание статьи соответствует нашим принципам редакционная этика. Чтобы сообщить об ошибке, нажмите здесь.

Полный путь к статье: Любители Linux » GNU / Linux » Системное администрирование » Как удалить все файлы в каталоге, кроме одного

Источник

Читайте также:  Раскладка кириллицы windows что это
Оцените статью