Удаление всех файлов и папок имеющих в названии определеное слово(или набор символов)

На самом деле это единственный раздел про unix на этом форуме

Модераторы: /dev/random, Модераторы разделов

Аватара пользователя
aiming
Сообщения: 375
ОС: DEBIAN 6

Удаление всех файлов и папок имеющих в названии определеное слово(или набор символов)

Сообщение aiming »

man rm мне ничего не дал..(( нашел что rf -- *название* (без звездочек) удаляет файл, имя которого начинается с *название*, rmdir так же удаляет только указанные.
НО мне нужна команда, которая удаляет все файлы и каталоги содержащие в названии заданные мной буквы, цифры и символы.
например:
locate mirage выдает

Код: Выделить всё

/usr/lib/pymodules/python2.6/mirage.py
/usr/lib/pymodules/python2.6/mirage.pyc
/usr/share/mirage
/usr/share/applications/mirage.desktop
/usr/share/doc/mirage
 и т.д.

По одному эти файлы,каталоги и директории удалять надоедает...
Есть ли возможность избавится от лишней работы?
никто не запомнит тебя за твои мысли.
Спасибо сказали:
IMB
Сообщения: 2567
ОС: Debian

Re: Удаление всех файлов и папок имеющих в названии определеное слово(или набор символов)

Сообщение IMB »

find . -iregex <что ищем> | xargs rm -r
Спасибо сказали:
Lan4
Сообщения: 339
Статус: hikki
ОС: Arch

Re: Удаление всех файлов и папок имеющих в названии определеное слово(или набор символов)

Сообщение Lan4 »

Например:

Код: Выделить всё

rm `locate mirage`
Спасибо сказали:
allez
Сообщения: 2223
Статус: Не очень злой админ :-)
ОС: SuSE, CentOS, FreeBSD, Windows

Re: Удаление всех файлов и папок имеющих в названии определеное слово(или набор символов)

Сообщение allez »

Можно попробовать так:

Код: Выделить всё

find -ipath "*mirage*" -exec rm -rf {} \;

Или так:

Код: Выделить всё

find -iwholename "*mirage*" -exec rm -rf {} \;
Спасибо сказали:
Аватара пользователя
aiming
Сообщения: 375
ОС: DEBIAN 6

Re: Удаление всех файлов и папок имеющих в названии определеное слово(или набор символов)

Сообщение aiming »

проверил - файлы и т.д. удалены,
НО locate mirage по прежнему находит эти файлы...гм, почему она врет?)

ВСЕМ СПАСИБО!
З.Ы.: решил -

Код: Выделить всё

locate -e mirage
никто не запомнит тебя за твои мысли.
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Удаление всех файлов и папок имеющих в названии определеное слово(или набор символов)

Сообщение drBatty »

aiming писал(а):
05.04.2011 19:40
НО locate mirage по прежнему находит эти файлы...гм, почему она врет?)

дык оно по индексу ищет. Индекс обычно создаётся каждый день в 4 утра.

или

sudo updatedb

А удаляю я так find . -name "*mirage*" -delete
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
allez
Сообщения: 2223
Статус: Не очень злой админ :-)
ОС: SuSE, CentOS, FreeBSD, Windows

Re: Удаление всех файлов и папок имеющих в названии определеное слово(или набор символов)

Сообщение allez »

aiming писал(а):
05.04.2011 19:40
НО locate mirage по прежнему находит эти файлы...гм, почему она врет?)

Потому что locate ищет не напрямую по файловой системе, а по собственным базам данных. Эти базы по умолчанию обновляются раз в сутки путем запуска updatedb.
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4823
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: Удаление всех файлов и папок имеющих в названии определеное слово(или набор символов)

Сообщение SLEDopit »

Lan4 писал(а):
05.04.2011 19:21
rm `locate mirage`
если у вас будет 100500 мильонов файлов *mirage*, то rm вылетит с ошибкой.
drBatty писал(а):
05.04.2011 20:41
find . -name "*mirage*" -delete
А папки test_mirage и mirage_copy останутся, если в них будут файлы. Либо, если нужны только файлы, я бы еще указывал -type f , чтобы совсем чистенько без ошибок работало (:
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Удаление всех файлов и папок имеющих в названии определеное слово(или набор символов)

Сообщение drBatty »

Lan4 писал(а):
05.04.2011 19:21
Например:
Код
rm `locate mirage`

злой вы... Попробуйте удалить Documents из маздая - удалится куча всего нужного, кроме самой Documents\ and\ Settings :(
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Lan4
Сообщения: 339
Статус: hikki
ОС: Arch

Re: Удаление всех файлов и папок имеющих в названии определеное слово(или набор символов)

Сообщение Lan4 »

drBatty писал(а):
05.04.2011 20:51
злой вы... Попробуйте удалить Documents из маздая - удалится куча всего нужного, кроме самой Documents\ and\ Settings :(

Упс) Забыл про пробелы)
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Удаление всех файлов и папок имеющих в названии определеное слово(или набор символов)

Сообщение drBatty »

SLEDopit писал(а):
05.04.2011 20:47
если у вас будет 100500 мильонов файлов *mirage*, то rm вылетит с ошибкой.

не... молча обрежется без всяких сообщений :(
SLEDopit писал(а):
05.04.2011 20:47
А папки test_mirage и mirage_copy останутся, если в них будут файлы.

ИМХО не следует удалять важные файлы, если имя каталога попадает под шаблон. А если попадает и то, и другое, то команда отлично удаляет. Только надо обходить в другом порядке (find -depth), впрочем, это верно для любого удаления (для опции delete обратный обход включается автоматически).

Lan4 писал(а):
05.04.2011 20:54
Упс) Забыл про пробелы)

не только. У меня 63 файла в системе, которые попадают под этот шаблон. Очень легко ошибиться :(
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4823
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: Удаление всех файлов и папок имеющих в названии определеное слово(или набор символов)

Сообщение SLEDopit »

drBatty писал(а):
05.04.2011 21:00
е... молча обрежется без всяких сообщений :(
да ну:

Код: Выделить всё

 $ rm `seq 1 1005000`
bash: /bin/rm: Argument list too long
drBatty писал(а):
05.04.2011 21:00
МХО не следует удалять важные файлы,
Ну ошибки то лезут, на нервы действуют (:
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Удаление всех файлов и папок имеющих в названии определеное слово(или набор символов)

Сообщение drBatty »

SLEDopit писал(а):
05.04.2011 21:17
да ну:

а у меня сейчас работает... ИЧСХ правильно...
а в slacky 10.2 просто откусывала молча хвост...
SLEDopit писал(а):
05.04.2011 21:17
Ну ошибки то лезут, на нервы действуют (:

а я сам не в курсе, надо-ли удалять файл, если под шаблон попадает каталог?
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
aiming
Сообщения: 375
ОС: DEBIAN 6

Re: Удаление всех файлов и папок имеющих в названии определеное слово(или набор символов)

Сообщение aiming »

drBatty писал(а):
05.04.2011 21:00
SLEDopit писал(а):
05.04.2011 20:47
А папки test_mirage и mirage_copy останутся, если в них будут файлы.

ИМХО не следует удалять важные файлы, если имя каталога попадает под шаблон. А если попадает и то, и другое, то команда отлично удаляет. Только надо обходить в другом порядке (find -depth), впрочем, это верно для любого удаления (для опции delete обратный обход включается автоматически).

Специально продемонстрирую (установил и удалил заново) вот что выводит:

Код: Выделить всё

qw@debian:~$ find . -name "*mirage*"
./.config/mirage
./.config/mirage/miragerc

И

Код: Выделить всё

qw@debian:~$ locate -e mirage
/home/qw/.config/mirage
/home/qw/.config/mirage/accel_map
/home/qw/.config/mirage/miragerc
/usr/bin/mirage
/usr/lib/pymodules/python2.6/mirage.py
/usr/lib/pymodules/python2.6/mirage.pyc
/usr/share/mirage
/usr/share/applications/mirage.desktop
/usr/share/doc/mirage
/usr/share/doc/mirage/CHANGELOG.gz
/usr/share/doc/mirage/README
/usr/share/doc/mirage/TODO
/usr/share/doc/mirage/changelog.Debian.gz
/usr/share/doc/mirage/changelog.gz
/usr/share/doc/mirage/copyright
/usr/share/locale/ru/LC_MESSAGES/mirage.mo
/usr/share/man/man1/mirage.1.gz
/usr/share/menu/mirage
/usr/share/mirage/TRANSLATORS
/usr/share/mirage/mirage_blank.png
/usr/share/mirage/stock_fullscreen.png
/usr/share/mirage/stock_leave-fullscreen.png
/usr/share/mirage/stock_shuffle.png
/usr/share/pixmaps/mirage.png
/usr/share/pyshared/mirage.py
/usr/share/python-support/mirage.public
/var/lib/dpkg/info/mirage.list
/var/lib/dpkg/info/mirage.md5sums
/var/lib/dpkg/info/mirage.postinst
/var/lib/dpkg/info/mirage.postrm
/var/lib/dpkg/info/mirage.prerm

по-моему есть разница. ( locate -e показывает записи которые относятся к существующим на момент поиска файлам(если я правильно перевел))

Код: Выделить всё

 sudo rm `locate -e mirage `| updatedb
но чем короче название тем опасней((
никто не запомнит тебя за твои мысли.
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Удаление всех файлов и папок имеющих в названии определеное слово(или набор символов)

Сообщение drBatty »

aiming писал(а):
05.04.2011 22:58
по-моему есть разница. ( locate -e показывает записи которые относятся к существующим на момент поиска файлам(если я правильно перевел))

неправильно.
find ищет в тек. каталоге
slocate по всему диску
slocate -e dir по директориям, в которых есть dir.

Есть 2 разницы между find и slocate
1) slocate находит файлы которые ещё есть в бд, и не находит которых ещё нет в бд.
2) slocate не показывает закрытые каталоги, а find туда не пускают. Последняя плачет по этому поводу.

А команду locate давно уже выпилили.

aiming писал(а):
05.04.2011 22:58
find . -name "*mirage*"

ну она и ищет в тек. каталоге. Смените точку на слеш
find / -iname "*mirage*"
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5405
ОС: Gentoo

Re: Удаление всех файлов и папок имеющих в названии определеное слово(или набор символов)

Сообщение /dev/random »

drBatty писал(а):
06.04.2011 09:52
А команду locate давно уже выпилили.

Да вот ни фига. Есть 3 реализации утилиты locate: gnu locate, slocate и mlocate (на самом деле есть ещё rlocate и куча других, но они малоизвестны). Первую реализацию давно отовсюду выпилили, вторую выпиливают, а третья приходит на место второй. Но при этом все три - это "команда locate".
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Удаление всех файлов и папок имеющих в названии определеное слово(или набор символов)

Сообщение drBatty »

/dev/random писал(а):
06.04.2011 10:26
Первую реализацию давно отовсюду выпилили

вот про неё я и говорил ;)
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4823
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: Удаление всех файлов и папок имеющих в названии определеное слово(или набор символов)

Сообщение SLEDopit »

aiming писал(а):
05.04.2011 22:58
sudo rm `locate -e mirage `| updatedb
о.О
не надо так делать (:
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
Аватара пользователя
aiming
Сообщения: 375
ОС: DEBIAN 6

Re: Удаление всех файлов и папок имеющих в названии определеное слово(или набор символов)

Сообщение aiming »

гм, а вот с этим согласитесь?

Код: Выделить всё

 sudo find / -iname "*mirage*" -type fd | xargs rm -ir dirname
никто не запомнит тебя за твои мысли.
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Удаление всех файлов и папок имеющих в названии определеное слово(или набор символов)

Сообщение drBatty »

aiming писал(а):
06.04.2011 18:58
гм. как же тогда искать в закрытых каталогах? ведь большинство "ненужных ненужностей оставшихся после удаленного пакета" лежат именно там.


no way

иначе - зачем их закрывать было?! а то, что "после удаления" осталось - это либо бекап для отката, либо мусор, который сам удаляется.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Удаление всех файлов и папок имеющих в названии определеное слово(или набор символов)

Сообщение sash-kan »

эээ, вы об чём?
$ locate radiusd.conf | grep ^/etc | wc -l
0
$ sudo locate radiusd.conf | grep ^/etc | wc -l
1
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
aiming
Сообщения: 375
ОС: DEBIAN 6

Re: Удаление всех файлов и папок имеющих в названии определеное слово(или набор символов)

Сообщение aiming »

оффтоп
drBatty писал(а):
06.04.2011 19:14
иначе - зачем их закрывать было?! а то, что "после удаления" осталось - это либо бекап для отката, либо мусор, который сам удаляется.

я подправил выше (сообщение №20)
З.Ы. почему-то мусор сам не удаляется=(
никто не запомнит тебя за твои мысли.
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Удаление всех файлов и папок имеющих в названии определеное слово(или набор символов)

Сообщение drBatty »

aiming писал(а):
06.04.2011 18:58
гм, а вот с этим согласитесь?
Код
sudo find / -iname "*mirage*" -type fd | xargs rm -ir dirname


1) -type fd как-то странно...
2) порядок неверный: вы должны сначала удалить файлы внутри директорий, а потом директории, если там нет файлов. Т.е. в порядке обратном созданию. У вас что-то непонятное - вы удаляете сначала директорию, потом пытаетесь удалить файлы в ней. Нужен ключ -depth
3) find умеет сама удалять ключом -delete. Подтверждение можно запросить опцией -ok.
4) сам подход неверный! Надо найти список файлов (создать его, если нет), а потом удалять по этому списку. А не по имени - ибо имя может случайно совпасть. Кроме того, пакет XYZ вправе создать файл ABC. Если уж так всё плохо в вашем дистрибутиве - ищите по дате, а не по имени. (ясно, что это тоже ненадёжно). А лучше поставьте слаку, там в /var/log/package/ лежат списки файлов для каждого пакета. (правда, никто об этом не знает, и думает, что там помойка. Ан нет...)
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Удаление всех файлов и папок имеющих в названии определеное слово(или набор символов)

Сообщение drBatty »

aiming писал(а):
06.04.2011 19:34
З.Ы. почему-то мусор сам не удаляется=(

не верю. У вас-же не маздай. Может вы как-то неправильно ставите?
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
aiming
Сообщения: 375
ОС: DEBIAN 6

Re: Удаление всех файлов и папок имеющих в названии определеное слово(или набор символов)

Сообщение aiming »

drBatty писал(а):
06.04.2011 19:50
aiming писал(а):
06.04.2011 18:58
гм, а вот с этим согласитесь?
Код
sudo find / -iname "*mirage*" -type fd | xargs rm -ir dirname


1) -type fd как-то странно...
2) порядок неверный: вы должны сначала удалить файлы внутри директорий, а потом директории, если там нет файлов. Т.е. в порядке обратном созданию. У вас что-то непонятное - вы удаляете сначала директорию, потом пытаетесь удалить файлы в ней. Нужен ключ -depth
3) find умеет сама удалять ключом -delete. Подтверждение можно запросить опцией -ok.
4) сам подход неверный! Надо найти список файлов (создать его, если нет), а потом удалять по этому списку. А не по имени - ибо имя может случайно совпасть. Кроме того, пакет XYZ вправе создать файл ABC. Если уж так всё плохо в вашем дистрибутиве - ищите по дате, а не по имени. (ясно, что это тоже ненадёжно). А лучше поставьте слаку, там в /var/log/package/ лежат списки файлов для каждого пакета. (правда, никто об этом не знает, и думает, что там помойка. Ан нет...)

sudo find / -iname "*mirage*" | xargs rm -ir dirname
меня не устраивает то, что с -ok удаляются все файлы, а вот rm -ir dirname запрашивает удаление каждого файла по очереди, потом каталога и потом директории.
не верю. У вас-же не маздай. Может вы как-то неправильно ставите?

дык вроде нормально, я давно уже не ставлю а только обновляю... только остаются в usr и home после удаленных программ и пакетов пустышки...
никто не запомнит тебя за твои мысли.
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Удаление всех файлов и папок имеющих в названии определеное слово(или набор символов)

Сообщение drBatty »

aiming писал(а):
06.04.2011 20:19
меня не устраивает то, что с -ok удаляются все файлы

вы читать умеете?

УДАЛЯТЬ НАДО В ПОРЯДКЕ, ОБРАТНОМ К ПОРЯДКУ СОЗДАНИЯ.

Всегда ваш К.О. Вы делаете наоборот.
aiming писал(а):
06.04.2011 20:19
дык вроде нормально, я давно уже не ставлю а только обновляю... только остаются в usr и home после удаленных программ и пакетов пустышки...

странно. У меня не остаётся. ЧЯДНТ?
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали: