Page 1 of 1
find und ignorieren von Verzeichnissen
Posted: 2008-11-19 11:40
by rfc
Hi,
ich möchte bei find gerne .svn Verzeichnisse und was darin ist komplett ignorieren.
Mein derzeitiger Versuch:
Code: Select all
find -type f ! -iwholename '*.svn*'
macht optisch dass was ich brauche, aber in Wahrheit geht es trotzdem (!) alle .svn Verzeichnisse durch. Ich muss auf SVN checkouts arbeiten, das sind reine Daten ca 1GB (viele kleine Files) und es dauert totzdem ewig. Verifizifiert hab ich das verhalten mit
Code: Select all
strace -e trace=file find -type f ! -iwholename '*.svn*'
Da sehe ich das er alle .svn auch abläuft, aber nicht ausgibt.
Ich finde keine anderen Parameter so dass find per se derartige Verzeichnisse gar nicht erst abläuft. Ich habs mit -path und -prune schon probiert, aber er scheint hier nicht .svn an beliebiger Tiefe zu erkennen.
danke
Re: find und ignorieren von Verzeichnissen
Posted: 2008-11-19 12:02
by daemotron
Dann ist find vielleicht das falsche Werkzeug, da find immer den komplette Pfadbaum unterhalb des angegebenen Ziels traversiert. Was hast Du denn genau vor? Im Notfall musst Du Dir ein kleines Shell-Skript schreiben, das Deinen Zielpfad mit ls rekursiv durchläuft und dabei .svn ignoriert, aber das dürfte unterm Strich kaum schneller laufen als find mit den .svn-Verzeichnissen...
Re: find und ignorieren von Verzeichnissen
Posted: 2008-11-19 13:07
by rfc
Im Endeffekt mach ich ein grep über die Files. grep -r fällt somit raus. In der Praxis sieht es also so aus:
Code: Select all
find -type f ! -iwholename '*.svn*' -print0 | xargs -0 grep ...
Re: find und ignorieren von Verzeichnissen
Posted: 2008-11-19 13:35
by Joe User
Code: Select all
for dir in `find . -type d ! -name .svn`
do
find ${dir} -type f -print0 | xargs -0 grep...
done
Re: find und ignorieren von Verzeichnissen
Posted: 2008-11-19 14:26
by rfc
Danke für den Tip. Mist, haut leider auch nicht ganz hin :)
.svn Verzeichnise enthalten Unterverzeichnisse, die werden dadurch nicht ignoriert :-(
Übrigens, dein Beispiel mit "dir" als Variable funktioniert bei mir nicht, weil
Code: Select all
$ ls -ld `which dir`
-rwxr-xr-x 1 root root 77352 2007-01-30 19:51 /bin/dir
Danke trotzdem!
Re: find und ignorieren von Verzeichnissen
Posted: 2008-11-19 16:22
by Roger Wilco
rfc wrote:Übrigens, dein Beispiel mit "dir" als Variable funktioniert bei mir nicht, weil
Code: Select all
$ ls -ld `which dir`
-rwxr-xr-x 1 root root 77352 2007-01-30 19:51 /bin/dir
Wieso sollte ein Programm im Pfad mit einer Schleifenvariablen in Konflikt kommen?
Re: find und ignorieren von Verzeichnissen
Posted: 2008-11-19 17:06
by rfc
Roger Wilco wrote:
Wieso sollte ein Programm im Pfad mit einer Schleifenvariablen in Konflikt kommen?
Gar nicht, hab ich wohl einen Fehler gehabt ;)