Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Общий по Linux (http://forum.oszone.net/forumdisplay.php?f=9)
-   -   Найти и удалить (http://forum.oszone.net/showthread.php?t=53670)

pi-a-ner 09-09-2005 09:15 354324

Найти и удалить
 
Задача: в определённом каталоге удалить все файлы содержащие текст "qwerty". Пока что у меня заработало только так
Код:

rm -f `grep qwerty -l ./my_path/*`
Но я-то знаю, то это не совсем корректно. Скажем, если файлов слишком много нужно использовать xargs. А вот с find -exec у меня ничего не выходит. Покажите примерчик, plz, а дальше я сам разберусь.

SMV 10-09-2005 21:42 354644

Код:

#!/usr/bin/perl -w
 
 my $str=$ARGV[0];
 my $path=$ARGV[1];
 my @grep_out=`grep $str $path/*`;
 my ($file,$s);
 
 foreach $file (@grep_out){
    ($file,$s) = split(':', $file);
    print "rm $file...\n";
    unlink $file;
 }

Можно, например, так.

mar 10-09-2005 22:15 354649

man find
/delete
Код:

-delete
            Delete found files and/or directories.  Always returns true.
            This executes from the current working directory as find recurses
            down the tree.  It will not attempt to delete a filename with a
            ``/'' character in its pathname relative to ``.'' for security
            reasons.  Depth-first traversal processing is implied by this
            option.

э-э-э вообще-то я всегда боюсь так чохом, но если уж очень хочется, то что-то такое:
Код:

find my_path/ -name "qwerty*" -delete
или, только файлы:
Код:

find my_path/ -name "qwerty*" -type f -delete

pi-a-ner 10-09-2005 22:33 354651

SMV
Спасибо, на перле я и сам лёгкостью могу это решить. А вот без перла...
mar
Вы, видимо, не совсем поняли: "qwerty" должно быть не в названии, а в содержимом файла.

mar 10-09-2005 23:21 354657

Пардон, торможу :(
Забавно:
Код:

find ../test -type f -print | xargs grep qwerty
отрабатывает правильно, а с -delete сносит все :/ Надо подумать

pi-a-ner 11-09-2005 10:02 354707

mar
Хм, казалось, с find я уже все варианты перепробовал, а вот так у меня получилось:
Код:

find ../test -type f -print | xargs grep -ls qwerty| xargs rm -f
Спасибо.

mar 11-09-2005 11:33 354714

pi-a-ner
работает :) И впрямь я вчера сильно тормозила, пардон


Время: 08:17.

Время: 08:17.
© OSzone.net 2001-