Verzeichnisse aus 'find' ausschliessen

Post Reply
Message
Author
tuxic trace

Verzeichnisse aus 'find' ausschliessen

#1 Post by tuxic trace »

Hallo,

ich hab ein Verzeichnis, den Unterverzeichnissen:

aepfel
brinen
orangen
bananen
himbeeren

Jetzt möchte ich mit find alle Verzeichnisse außer "orangen" und "bananen/nuesse" (also bananen schon, aber nicht das Unterverzeichnis von bananen, names "nuesse" durchsuchen). Die manpage schlägt "-prune" vor, klappt aber nicht.
find . ! orangen ! bananen\/nuesse -name .... klappt auch nicht

Wer hat des Rätsels Lösung ?

ratte

Re: Verzeichnisse aus 'find' ausschliessen

#2 Post by ratte »

man muss ein bisserl mit relativen pfaden jonglieren, dann funzts:
<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
$ pwd
/home/ratte/temp
$ ls
perl schwob
$ find . -path './schwob' -prune -o -print
.
./perl
./perl/1
$ # good, hurrey
$
$ cd ../
$ pwd
/home/ratte
$ find temp -path './temp/schwob' -prune -o -print
temp
temp/perl
temp/perl/1
temp/schwob
temp/schwob/webschwob.lex
temp/schwob/lex.yy.c
$ # not so good, what a pity
$
$ find ./temp/ -path './temp/schwob' -prune -o -print
./temp/
./temp/perl
./temp/perl/1
$ # very good, double-hurrey
</font><hr></pre></blockquote>

ratte

tuxic trace

Re: Verzeichnisse aus 'find' ausschliessen

#3 Post by tuxic trace »

Danke. Wenn mich nicht alle täuscht, hatte ich das "-o" nach dem "-prune" vergessen. Werds heut abend mal probieren, wenn das Wetter es denn zuläßt :)

cd
Posts: 114
Joined: 19. Dec 2000 21:04

Re: Verzeichnisse aus 'find' ausschliessen

#4 Post by cd »

find . ! -name orangen ! -name bananen\/nuesse ... (jede -name-Option wird durch ! invertiert, wildcard * per \ quoten: \* )

Gruss, Clemens
Last edited by cd on 30. Jul 2002 7:02, edited 1 time in total.

Basti_litho

Re: Verzeichnisse aus 'find' ausschliessen

#5 Post by Basti_litho »

hallo Clemens,

also bei mir klappt das mit dem negieren nicht er ignoriert das einfach. Ich habe es einige male probiert, dabei immer wieder kontrolliert ob ichs falsch geschrieben habe. Leider nicht. :)

Gruß
Basti_litho

Basti_litho

Re: Verzeichnisse aus 'find' ausschliessen

#6 Post by Basti_litho »

Hallo,

also ich glaube ich habe des Rätsels lösung gefunden:

Um ein Verzeichniss oder eine Datei auszuschließen muss man entweder für jedes Verzeichnis bzw. Datei ein " -path datei -prune" schreiben, wobei dann noch die einzelnen "ausklammerungen" voneinander mit
einmem "-o" zu trennen sind.

Einfacher kann man sich manchen indem man die verzeichnisse in einer klammer zusammenschließt.

Beispiel:

Ich möchte die gesammte Festplatte nach ".txt" dateien durchsuchen, aber weder /mnt/server noch /cdrom oder gar /cdrecorder.

Dieser befehl würde das erledigen:

find / \( -path /mnt/server -o -path /cdrom -o -path /cdrecorder \) -prune -o -name *.txt -print

Dieser Befehl sieht zwar ein bisschen umfangreich aus ist aber wenn man ihn ein paar mal angewendet hat gut zu merken

(Die "\" müssen sein um die klammer vor der shell zu schützen - sonst gehts nicht)

Mfg

Post Reply