gnufind --exclude-from

03/02/2009 - 06:05 von Christian Brandt | Report spam
Hat jemand eine elegante Möglichkeit beim Aufruf von gnufind bestimmte
Regex aus einer Datei zu lesen und diese nicht weiter zu verfolgen?
Gnufind kennt leider die praktische --exclude-from Option von rsync nicht.

z.B. find / --exclude-from=dontfollow.lst

mit dontfollow.lst
**/lost+found/
**/.recycle/
**/.gvfs
/var/spool/squid
/var/tmp
/tmp
/proc
/sys

Idealerweise formatkompatibel zur --exclude-from Option von rsync, da
ich dann die selbe exclude-Datei in find und rsync verwenden kann.

Leider ist mein aktueller find-Aufruf schon erschreckend kompliziert
geworden, ungelogen eine 2kByte grosse Kommandozeile, d.h. Ersatztools
kommen nur in Frage wenn sie kompatibel zu gnufind sind.

Als letzte Option kann ich mir einen Perlwrapper basteln der hàndisch
das rsync-Format auswertet, das wird richtig wiederlich da meine
Funktionalitàt dann nicht mehr voll von einem find-Durchlauf machbar
ist, aber eigentlich muß das auch anders gehen?

Christian Brandt
 

Lesen sie die antworten

#1 Christian Brandt
05/02/2009 - 11:33 | Warnen spam
Christian Brandt schrieb:

Als letzte Option kann ich mir einen Perlwrapper basteln der hàndisch
das rsync-Format auswertet, das wird richtig wiederlich da meine
Funktionalitàt dann nicht mehr voll von einem find-Durchlauf machbar
ist, aber eigentlich muß das auch anders gehen?



Jetzt habe ich mir den Perlwrapper gebaut aber mit einem anderem
Ansatz, er bastelt aus der rsync-exclude-from-datei eine Kommandozeile
für find bzw. den "-path blubber -prune -o" Teil:

if(@parm_exclude)
{
$total_exclude="\\( ";
for (my $i=0;$i<=$#parm_exclude;$i++)
{
if($parm_exclude[$i]=~/^\*(\*\/.*\/)$/o)
{ $total_exclude.="-path \"$1*\" -o "; }
else
{ $total_exclude.="-path \"$parm_exclude[$i]\" -o "; }
}
$total_exclude=substr($total_exclude, 0, -3)."\\) -prune -o ";
}

Die find-Commandline wird dadurch allerdings schnuckelige 15kByte groß
da es sehr viele Parameter sind und ich sie viermal wiederholen muß.
Gibts eigentlich ein Limit bei Commandlines auf 32Bit- und 64Bit-Systemen?

Christian Brandt

Ähnliche fragen