find und ignorieren von Verzeichnissen

Bash, Shell, PHP, Python, Perl, CGI
rfc
Posts: 19
Joined: 2006-05-29 15:28

find und ignorieren von Verzeichnissen

Post 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
User avatar
daemotron
Administrator
Administrator
Posts: 2639
Joined: 2004-01-21 17:44

Re: find und ignorieren von Verzeichnissen

Post 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...
rfc
Posts: 19
Joined: 2006-05-29 15:28

Re: find und ignorieren von Verzeichnissen

Post 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 ...
User avatar
Joe User
Project Manager
Project Manager
Posts: 11176
Joined: 2003-02-27 01:00
Location: Hamburg

Re: find und ignorieren von Verzeichnissen

Post by Joe User »

Code: Select all

for dir in `find . -type d ! -name .svn`
do
  find ${dir} -type f -print0 | xargs -0 grep...
done
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.
rfc
Posts: 19
Joined: 2006-05-29 15:28

Re: find und ignorieren von Verzeichnissen

Post 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!
Roger Wilco
Posts: 5923
Joined: 2004-05-23 12:53

Re: find und ignorieren von Verzeichnissen

Post 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?
rfc
Posts: 19
Joined: 2006-05-29 15:28

Re: find und ignorieren von Verzeichnissen

Post 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 ;)