• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

find + perl

Hi!

Code:
find ~ -type f | perl -ne 'print if /test/'

Was muss ich hier noch einfügen, damit Perl nicht mit den Dateinamen arbeitet, sondern die Datein selbst durchsucht?
 
catweasel schrieb:
Hi!

Code:
find ~ -type f | perl -ne 'print if /test/'

Was muss ich hier noch einfügen, damit Perl nicht mit den Dateinamen arbeitet, sondern die Datein selbst durchsucht?
Hmm ich wurde das ganze anders herum machen:
Code:
find ~ -type f -name "*test*"

Oder suchst du explizit eine Lösung in Perl?

}-Tux-{
 
Ah sorry - habe dein Problem erst nicht richtig verstanden.
Wenn du mit dem File arbeiten willst, musst du es halt noch öffnen, schliessen etc.

z.B. (geht bestimmt noch eleganter):
Code:
find . -maxdepth 1 -type f | perl -ne 'if (/test/) { open(F, $_) || die($!); while (<F>) { print; } } close(F);'

}-Tux-{
 
Hallo,

bist Du sicher, daß Du nicht
Code:
grep -r test *
suchst ?

Wenn Perl, dann würde ich persönlich es nicht mit find mischen:
Code:
#!/usr/bin/perl

use warnings;
use strict;

use File::Find;
no warnings 'File::Find';

find(\&wanted, ".");

sub wanted
{
    my $file = $File::Find::name;

    if (-f $file)
    {
        open(FH, "<$file");
        while(<FH>)
        {
            if ($_ =~ m/test/)
            {
                print "$file\n";
            }
        }
        close(FH);
    }
}
Schau Dir auch mal
Code:
find2perl
an. Es kann Dir ggf. automatisch entsprechenden Perl-Code erzeugen (im Beispiel hab ich's aber von Hand geschrieben).

Viele Grüße
 
}-Tux-{ schrieb:
Code:
find . -maxdepth 1 -type f | perl -ne 'if (/test/) { open(F, $_) || die($!); while (<F>) { print; } } close(F);'
}-Tux-{
Das ist mir doch zu lang.


abgdf schrieb:
Code:
#!/usr/bin/perl

use warnings;
use strict;

use File::Find;
no warnings 'File::Find';

find(\&wanted, ".");

sub wanted
{
    my $file = $File::Find::name;

    if (-f $file)
    {
        open(FH, "<$file");
        while(<FH>)
        {
            if ($_ =~ m/test/)
            {
                print "$file\n";
            }
        }
        close(FH);
    }
}
Ich hätte etwas für die Kommandozeile gebraucht.
Dann bleib ich halt bei grep.
 
Oben