ultraschnecke
Goto Top

Linux find unter Windows

Hallo,

meine Windows-Batch-Kenntnisse sind relativ bescheiden face-sad

Ich suche ein äquivalent für den Linux Befehl "find", genauer gesagt will ich folgenden Befehl auf die Windows commandline "übersetzen"

find -type f -name "*.txt" -exec COMMAND {} \;

für COMMAND soll eine EXE aufgerufen werden in der Art "command.exe text.txt"

Danke für Ideen und Gruß

Content-ID: 32727

Url: https://administrator.de/forum/linux-find-unter-windows-32727.html

Ausgedruckt am: 22.12.2024 um 12:12 Uhr

ratzla
ratzla 17.05.2006 um 18:38:03 Uhr
Goto Top
Zwei Möglichkeiten:
1. cygwin installieren - damit hast Du auch den find befehl

2. Indexdienst benutzen (Suche über Explorer - ggf. mit erweiterten Opionen) - leider findet der manchmal nicht so genau das was man will.
Biber
Biber 17.05.2006 um 19:28:14 Uhr
Goto Top
Na,
das würde ich so übertrieben wie ratzla nicht formulieren...

Verwirrend an der folgende Zeile (wenn man/frau von der *NIX-Seite kommt) ist, dass der CMD-Prompt keinen find-Befehl hat, der sich AUF Dateien bezieht.
Der CMD-Find-Befehl bezieht sich nur auf die Suche in Dateien (das, was anderswo der grep übernimmt.

Dateien finden ist unter dem CMD-Interpreter immer irgendeine DIR-Variante.
Bei der Suche über ein ganzes Laufwerk liefert ein "dir /s /b [Lw:\pfad\]Dateimaske" alle Dateien auch in allen Unterverzeichnssen und zwar nur deren Namen (ohne Größe, Owner
etc).

Diese Liste wiederum kannst Du per angedeuteter FOR--IN..DO-Anweisung zur weiteren Verarbeitung übergeben, z.B. an eine *.Exe

Beispiel:
for /F "delims=" %i in ('dir /b /s \*.txt') do @find "blank" "%i"  

...würde alle Dateien *.txt auf dem aktuellen Laufwerk übergeben an die find.exe, die darin nach dem String "blank" sucht.

Wäre schon das Beisriel, was Du meintest - Du könntest also auch alle diese gefundenen Dateien an ein Zip-Tool.exe oder einen Virus-Check.exe oder an eine Editor.exe senden.

Zum besseren Verständnis am Besten den Zwischenschritt am CMD-Prompt machen:
for /F "delims=" %i in ('dir /b /s \*.txt') do @echo %i  
...dann siehst Du, was ich mit der Liste meine, die so an STDOUT übergeben wird.
Die Liste sieht exakt aus wir ein "dir /b /s \*.txt" OHNE FOR..IN..DO drumherum, hat aber einzelneAusgabe-Parameter, die ich einzeln einer *.exe zuschanzen kann.

Statt mit echo etwas an die Console zu übergeben, kannst Du also diese Dateinamen auch einer *.exe,*.vbs, *.bat,...einer ausführbaren Datei übergeben.

Hope That Helps
Biber
Ultraschnecke
Ultraschnecke 18.05.2006 um 13:07:05 Uhr
Goto Top
Das geht zwar vollkommen anders, aber ist genau das was ich suche.

DANKE!!!!!
sfried100
sfried100 05.03.2007 um 15:34:52 Uhr
Goto Top
Hallo!

Habe erst wenige Beiträge in diesem Forum gelesen und die Frage wurde vielleicht bereits an anderer Stelle behandelt.
Wie kann man das Problem mit find mit den Dateinamen mit Leerzeichen "My documents" in den Griff bekommen?
Habe auf meinem Rechner keine Administratorrechte (keine exe ausführen, kein regedit etc.).

Liebe Grüße
sfried
Ultraschnecke
Ultraschnecke 05.03.2007 um 21:26:52 Uhr
Goto Top
Hmm ist schon ne Weile her, aber normalerweise kann man das Leerzeichen entweder mit Escape-Zeichen ersetzen oder den Pfad in Anführungszeichen verpacken... Vielleicht hilft Dir diese im-Nebel-stocher-Antwort face-wink

Gruß
Biber
Biber 05.03.2007 um 21:54:46 Uhr
Goto Top
@sfried100,

Ultraschnecke hat vollkommen recht: Pfad-/Dateinamen mit Leerzeichen werden in Anführungszeichen eingeschlossen.

Beispiele:
find "suchstring" "d:\Biber\Eigene Dateien\*.txt"
findstr "suchstring" "C:\Dokumente und Einstellungen\Biber\*.*"

Du findest einige Beispiele z.B. im Bereich "Batch & Shell" über die Forumssuche.

Gruss
Biber
sfried100
sfried100 05.03.2007 um 22:01:18 Uhr
Goto Top
Hallo Ultraschnecke und Biber, vielen Dank für die prompten Antworten.
Werde morgen den Tipp anwenden.

Gruß
sfried100