Stefan Priebe: Gibt es unter Apacha bzw. Unix einen Befehl, der dir /s unter Dos gleicht ?

Hallo !

Gibt es unter Apacha bzw. Unix einen Befehl, der dir /s unter Dos gleicht ?

Also alle Verzeichnisse nach einer bestimmten Datei durchsucht...

Stefan

  1. Hallöchen

    Gibt es unter Apacha bzw. Unix einen Befehl, der dir /s unter Dos gleicht ?

    Apache hat damit gar nix zu tun, unter allen mir bekannten unixen gibts das programm find, was das erledigt...

    Usage: find [path...] [expression]
    default path is the current directory; default expression is -print

    näheres in der man page (man 1 find)

    bis dann
    gero

    1. Ja, aber wenn ich find perl eingeb findet er Perl nicht owohl er doch eigentlich /usr/perl/bin/perl anzeigen müßte oder ?

      Wie ist also der Parameter, damit er auch Subdirectories durchsucht... ?

      Stefan

      1. Ja, aber wenn ich find perl eingeb<<

        da liegt der fehler...
        aus der man page:

        -name pattern
                      Base of file name (the path with the leading direc-
                      tories removed) matches shell pattern pattern.

        ist also das was du suchst:

        find -name perl

        bis dann
        gero

      2. Ja, aber wenn ich find perl eingeb<<

        da liegt der fehler... aus der man page:

        -name pattern               Base of file name (the path with the leading direc-               tories removed) matches shell pattern pattern.

        ist also das was du suchst:

        find -name perl

        bis dann gero

      3. Ja, aber wenn ich find perl eingeb findet er Perl nicht owohl er doch eigentlich /usr/perl/bin/perl anzeigen müßte oder ?

        Wie ist also der Parameter, damit er auch Subdirectories durchsucht... ?

        "find" durchsucht automatisch Unterverzeichnisse. Das ist überhaupt seine eigentliche Funktion - und das ist gar nicht das, was Du suchst.

        Um den Perl-Interpreter zu finden, gibt es mehrere Möglichkeiten:

        a) Testen, ob er in Deinem PATH enthalten ist:
            "which perl"
        Das liefert die Pfadangabe des *ersten* Perl, das gefunden wird.

        b) Nach allen Dateien suchen, die "perl" heißen:
           "find / -name perl -print"
        Das liefert beginnend im Verzeichnis "/" die Pfadnamen *sämtlicher* Perls, die auf dem Rechner existieren. (Und wahrscheinlich einen Haufen Fehlermeldungen für Verzeichnisse, in denen Du kein Leserecht hast.)

  2. Hallo Stefan,

    Gibt es unter Apacha bzw. Unix einen Befehl, der dir /s unter Dos gleicht ?

    Kurze Abhandlung über das Dateienfinden unter Unix (in diesem Fall Linux. sollte aber unter jedem anderen Unix funktionieren):

    Der DOS Befehl dir/s entspricht am Besten " ls -alR " , listet alle Dateien und Verzeichnisse ab dem Verzeichniss in dem Du Dich befindest und darunter im ausführlichen Modus.

    ls   =  "list" Befehl

    -a  =  alle Dateien und Ordner

    -R  = rekursiv

    -l   = ausführliche Angaben

    es gibt noch viel mehr siehe Man-Page ("man ls")bzw. info ("info ls")

    Um nicht jedesmal in das entsprechende Verzeichniss hüpfen zu müssen, kannst Du auch den Ordner angeben: " ls -alR ~/foodir " listet alle Dateien und Ordner im Homeverzeichniss, Unterverzeichniss /foodir rekursiv und ausführlich.

    Um bestimmte Dateien schneller zu finden gibt es noch "locate"

    "updatedb" erzeugt eine Datenbank, in der sämtliche Dateinamen aufgeführt sind, die auf Deinem Rechner zu finden sind, und auf die Du Zugriffsberechtigung hast, (dauert ein wenig, auf meinem Rechner mit insgesammt einer halben Mio Dateien und als "root" gestartet etwa 15 Minuten) mit "locate Datei" findest Du sie dann.
    Vorher evt aus dem Netzwerk gehen, wenn Du an einem Server hängst, der recht viele Dateien hat und auf die Du auch noch Zugriff hast ;-)
    " updatedb " solltest Du immer dann laufen lassen, wenn Dateien geändert werden, am besten täglich über einen cronjob, vieleicht die Priorität heruntersetzen, wenn Du massive Performanceeinbußen spürst

    Läßt sich in der bash auch schön nutzen:

    " emacs $(locate ~/webpage/) "

    Läd _alle_ Dateien in Deinem im Webpage - ordner im Homeordner in den Emacs. (Vorher solltest Du den Emacs so konfiguriert haben, das er nur Clients startet ;-) im KDE mit kedit geht es wunderbar)sollten in Deinem Verzeichniss auch Unterverzeichnisse sein gibts evt Fehlermeldungen vom Editor.

    "find" wurde schon angesprochen, trotzdem noch ein paar Optionen:

    -depth _zuerst_ das aktuelle Verzeichniss, _dann_ die Unterverzeichnisse

    -follow folgt auch symbolischen Links

    -maxdepth n beschränkt die Tiefe der Suche auf das nte Unterverzeichniss

    -ctime n sucht Dateien,die vor genau n Tagen geändert wurden

    -ctime +n dito, die älter als n Tage sind

    -ctime -n dito, die jünger als n Tage sind

    -group Gruppenname findet alle Dateien der Gruppe "Gruppenname"

    -nogroup Gruppenname dito, die ihr nicht angehören

    -path wie -name nur inclusive Pfad und die Jokerzeichen erfassen hier auch "/"

    -perm zugiffbits Oktalzahl der Zugrifbits mit "-" davor mindestens mit "+" auch darüberhinaus.

    -size dateigröße Angabe erfolgt in vielfachen von 512 Bytes mit "-" vor der Größenangabe werden alle Dateien erfaßt, die kleiner sind , mit "+" alle , die größer sind. k ändert in Kilobytes also "-size +50k" ertfasst alle Dateien, die größer als 50 Kb sind.

    -type zeichen Die Zeichen sind "f" für reguläre Dateien, "d" für Verzeichnisse und "l" für symbolische Links.

    -user username
    und
    -nouser username wie -group nur halt für user
    -exec kommando[optionen] {} ;
    gibt einem Kommando die gefundenen Dateinamen z.B, "grep"

    -print gibt das Ergebniss aus (normalerweise Default)

    "find -name ‚*.html‚ maxdepth -1 -exec grep -q image {}; -print > ergebniss"

    grast alle html Dateien im aktuellen Verzeichniss ab. ob darin ein image vorhanden ist und gibt das Ergebniss in der Datei "ergebniss" aus.

    Wenn Du wissen willst welch Links das sind:

    "grep -nw href $(find -name ‚*.html‚ -maxdepth -1) "

    gibt Dateinamen und Zeilennummer und Zeile aus, in denen der String "href" vorkommt.

    "grep" ist also auch noch sehr nützlich, findet Strings _in_ Dateien

    "du" gibt den Speicherbedarf in kb der Dateien an

    -b dito in Bytes
    -c die Summe
    -s _nurt_ die Summe
    -S nur im aktuellen Verzeichniss

    Bleistift, äh, Beispiel:

    "du -cS *.html" zeigt den Platzbedarf aller html Dateien im Aktuellen Verzeichniss, unten steht die Summe.

    Grüße
    Christoph