Удалене файлов по расширению (find -iname '*.bmp' -exec rm -rf '{}' \;)

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

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

Аватара пользователя
Norway
Сообщения: 26
ОС: Debian

Удалене файлов по расширению

Сообщение Norway »

Добрый день.

Задача следующая, почистить каталоги от файлов с расширением .jpg .bmp и.т.д.
Команда имеется такая:

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

find -iname '*.bmp' -exec rm -rf '{}' \;


Как бы сделать так, чтобы в одну строчку можно было задать нужные расширения?
Заранее извиняюсь, если такая тема была, я честно скал.
Спасибо сказали:
smaharbA
Сообщения: 229
ОС: Windows Vista

Re: Удалене файлов по расширению

Сообщение smaharbA »

find -iname '*.bmp' -o -iname '*.jpg' ...

не пойдет ?
Я конечно далек от мысли...(с)
Спасибо сказали:
Аватара пользователя
Uncle_Theodore
Сообщения: 3339
ОС: Slackware 12.2, ArchLinux 64

Re: Удалене файлов по расширению

Сообщение Uncle_Theodore »

smaharbA писал(а):
18.01.2010 10:58
find -iname '*.bmp' -o -iname '*.jpg' ...

не пойдет ?

Я бы попробовал

find . \( -iname '*.bmp' -o -iname '*.jpg' \) -print
Спасибо сказали:
Аватара пользователя
Norway
Сообщения: 26
ОС: Debian

Re: Удалене файлов по расширению

Сообщение Norway »

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

Re: Удалене файлов по расширению

Сообщение drBatty »

Norway писал(а):
18.01.2010 10:41
Как бы сделать так, чтобы в одну строчку можно было задать нужные расширения?

для этого есть ключ
-regex pattern
File name matches regular expression pattern. This is a match on the whole
path, not a search. For example, to match a file named `./fubar3', you can
use the regular expression `.*bar.' or `.*b.*3', but not `f.*r3'. The reg-
ular expressions understood by find are by default Emacs Regular Expres-
sions, but this can be changed with the -regextype option.

find . -regex ".*\(bz2\|gz\)"
выдаст все файлы, имя которых кончается на gz или на bz2.

ЗЫЖ Обратите внимание!
Это не подстановка.
Это регулярное выражение. *.jpg не имеет смысла. правильно писать: .*\.jpg
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
Goodvin
Ведущий рубрики
Сообщения: 4333
Статус: ⚝⚠⚒⚑⚖☭☞☣☤&

Re: Удалене файлов по расширению

Сообщение Goodvin »

Norway писал(а):
18.01.2010 10:41
Как бы сделать так, чтобы в одну строчку можно было задать нужные расширения?
Заранее извиняюсь, если такая тема была, я честно скал.
На всякий случай, на будущее:
в линуксе у файлов нет никаких "расширений".
Вообще нет.

Есть только имя файла.
Если в этом имени между каким-то символами есть точка или точки - это ничего не меняет, это всего лишь имя файла с точкой(-ами) внутри имени.
Это важный аспект для пониманя принципов обращения с файлами в линукс.

Ну а то, что какое-то приложение, увидев у файла окончание в имени в виде ".txt", считает такой файл текстовым - это особенность только данного конкретного приложения и больше ничего.

Ровно с таким же успехом файл с именем "anekdot.txt" может быть картинкой, звуковым файлом, шифрованным контейнером с целым миром внутри и еще чем угодно.
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Удалене файлов по расширению

Сообщение drBatty »

Goodvin писал(а):
19.01.2010 15:03
Ровно с таким же успехом файл с именем "anekdot.txt" может быть картинкой, звуковым файлом, шифрованным контейнером с целым миром внутри и еще чем угодно.

...впрочем как и в Windows... только об этом мало кто помнит :(
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

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