Frage zu find

Wer kennt die Syntax für find, wenn man ein Verzeichnis nach Dateien durchsuchen will, aber alle darunter liegende Verzeichnisse auslassen will? Also so was wie:

find /home/dir -type f -[hier steht Deine Lösung] -print

Bitte die Frage nicht einfach nur mit ‚Ich!‘ beantworten :smile:

Stefan

Wer kennt die Syntax für find, wenn man ein Verzeichnis nach
Dateien durchsuchen will, aber alle darunter liegende
Verzeichnisse auslassen will? Also so was wie:

find /home/dir -type f -[hier steht Deine Lösung] -print

Bitte die Frage nicht einfach nur mit ‚Ich!‘ beantworten :smile:

Hallo Stafan,

bevor ich Dir Deine Antwort liefere, noch eine kleine Belehrung. Anders als bei Windows, gibt es zu Linux und seinen Befehlen eine sehr gute Dokumentation. So findest Du auch die Lösung Deines Problems leicht, indem Du „man find“ eintippst.

-maxdepth ist Dein Freund. Aber auch die -mount und -noleaf Optionen solltest Du Dir mal anschauen.

Gruß

Fritze

bevor ich Dir Deine Antwort liefere, noch eine kleine
Belehrung. Anders als bei Windows, gibt es zu Linux und seinen
Befehlen eine sehr gute Dokumentation. So findest Du auch die
Lösung Deines Problems leicht, indem Du „man find“ eintippst.

Vielen Dank. Vielleicht auch noch eine kleine Belehrung von mir: Der man-Befehl ist mir jetzt seit 1991 bestens bekannt. Und es ist zwar sehr interessant zu erfahren, dass bei Windows etwas anders ist, aber danach hatte ich nicht gefragt.

-maxdepth ist Dein Freund. Aber auch die -mount und -noleaf
Optionen solltest Du Dir mal anschauen.

Yep. Das Problem liegt leider in der Wahl des Betriebssystems. Der find-Befehl auf Solaris 2.7 unterstützt leider weder ‚-maxdepth‘ (und das wäre es gewesen) noch ‚-noleaf‘ (hat gar nichts mit dem Thema zu tun). Die Option ‚-mount‘ fällt bei mir in Ermangelung gemounteter Laufwerke eh flach.

Leider kann ich auf der Maschine kein gnu-find installieren. Schade eigentlich.

Gruß,
Stefan

Wer kennt die Syntax für find, wenn man ein Verzeichnis nach
Dateien durchsuchen will, aber alle darunter liegende
Verzeichnisse auslassen will? Also so was wie:

find /home/dir -type f -[hier steht Deine Lösung] -print

http://www.heise.de/ix/artikel/2001/07/164/

Keine Auhnung, was Du wirklich willst. Eventuell mit xargs, grep und ls was basteln?

Sebastian

http://www.heise.de/ix/artikel/2001/07/164/

Ein schöner Artikel. Der löst Probleme, die ich bisher nicht hatte :smile: Trotzdem danke für den Link.

Keine Auhnung, was Du wirklich willst. Eventuell mit xargs,
grep und ls was basteln?

Ich zweifle noch daran, dass mir das wirklich hilft. Ich möchte in einem Verzeichnis alle Dateien finden, die älter als 90 Tage sind und diese dann komprimieren.

Mach ich doch glatt mit:

find /home/dir -type f -mtime +90 -exec gzip {} \;

Funzt prima. Nur leider befindet sich im Verzeichnis /home/dir noch das Unterverzeichnis /home/dir/sub, und die Dateien in diesem Unterverzeichnis sollen unangetastet bleiben. Natürlich findet find auch in diesem Unterverzeichnis Dateien, weil es darin sucht. Ich will die Suche aber auf das Verzeichnis /home/dir beschränken, und nur dort Dateien suchen und finden.

Das geht mit dem GNU-find, dass die Option ‚-maxdepth‘ unterstützt, mittels der ich angeben kann, wieviele Verzeichnisebenen durchsucht werden sollen.

Leider geht das aber nicht mit dem find auf Solaris 2.7, das kennt nämlich ‚-maxdepth‘ nicht und bietet laut man page auch nichts Entsprechendes an *SEUFZ*. Vielleicht hat ja jemand eine elegante Idee und kann mir einen Tipp geben, mir fällt jedenfalls nix Brauchbares ein.

Stefan

Versuch mal damit Re: Frage zu find
man find -> -path
----snip
-path pattern
File name matches shell pattern pattern. The
metacharacters do not treat /' or .’ specially;
so, for example,
find . -path ‚./sr*sc‘
will print an entry for a directory called
‚./src/misc‘ (if one exists). To ignore a whole
directory tree, use -prune rather than checking
every file in the tree. For example, to skip the
directory `src/emacs’ and all files and directories
under it, and print the names of the other files
found, do something like this:
find . -path ‚./src/emacs‘ -prune -o
-print

----snap

Weiß natürlich nicht obs das auch unter Solaris gibt.

Use The Source Luke:smile:

Markus

PS
Wieso drafst du eigentlich kein gnu-find installieren?
(Nur aus intresse)

bevor ich Dir Deine Antwort liefere, noch eine kleine
Belehrung. Anders als bei Windows, gibt es zu Linux und seinen
Befehlen eine sehr gute Dokumentation. So findest Du auch die
Lösung Deines Problems leicht, indem Du „man find“ eintippst.

Vielen Dank. Vielleicht auch noch eine kleine Belehrung von
mir: Der man-Befehl ist mir jetzt seit 1991 bestens bekannt.
Und es ist zwar sehr interessant zu erfahren, dass bei Windows
etwas anders ist, aber danach hatte ich nicht gefragt.

Die meisten Leute kommen von Windows zu Linux und nerven mit Fragen, die man sofort in den man-pages findet. Unter Windows gibt es keine vergleichbare Dokumentation.

-maxdepth ist Dein Freund. Aber auch die -mount und -noleaf
Optionen solltest Du Dir mal anschauen.

Yep. Das Problem liegt leider in der Wahl des Betriebssystems.
Der find-Befehl auf Solaris 2.7 unterstützt leider weder
‚-maxdepth‘ (und das wäre es gewesen) noch ‚-noleaf‘ (hat gar
nichts mit dem Thema zu tun). Die Option ‚-mount‘ fällt bei
mir in Ermangelung gemounteter Laufwerke eh flach.

Tja, wenn Du hier im Forum nichts weiter angibst, dann gehen die Antwortenden in der Regel davon aus, dass Du Dich auf Linux beziehst. Dort sind meistens die GNU-Versionen der Unix-Befehle implementiert. Das nächste mal darfst Du gerne gleich angeben, unter welchem System Du arbeitest.

Leider kann ich auf der Maschine kein gnu-find installieren.
Schade eigentlich.

Ja, wirklich schade. So kann ich Dir nämlich nicht weiterhelfen.

Gruß

Fritze

Das nächste mal darfst Du gerne
gleich angeben, unter welchem System Du arbeitest.

Das wollte ich auch zuerst machen, entschied mich aber dann dagegen, weil ich dachte, dass ich dann möglicherweise gar keine Antwort bekäme und mir dadurch eine wichtige Information durch die Lappen gingen. Sooo viele Linuxer arbeiten nun auch nicht gleichzeitig unter Solaris, nicht wahr? Aber viele Linuxer haben natürlich auch Lösungen für Solaris (oftmals ohne das genau zu wissen).

Ja, wirklich schade. So kann ich Dir nämlich nicht
weiterhelfen.

Du hast bereits genug geholfen, vielen Dank.
Stefan