Textsuche in den ersten Zeichen einer Datei
Moderators: Hacker, Stefan2, white
Textsuche in den ersten Zeichen einer Datei
Ich muss Sicherungsdateien von Autocad suchen, die so zu erkennen sind:
- die Dateiendung ist BAK (und damit nicht eindeutig, weil es auch BAK aus anderen Programmen gibt)
- die ersten 4 Zeichen heissen immer "AC10", dann folgen fast nur noch Binärdaten.
Ich brauche daher eine Textsuche in BAK, die nur die ersten vier Zeichen durchsucht. Den Rest an Binärdaten zu durchsuchen macht keinen Sinn und kostet unwahrscheinlich viel Zeit.
Wie kann ich die Textsuche reduzieren?
Peter
- die Dateiendung ist BAK (und damit nicht eindeutig, weil es auch BAK aus anderen Programmen gibt)
- die ersten 4 Zeichen heissen immer "AC10", dann folgen fast nur noch Binärdaten.
Ich brauche daher eine Textsuche in BAK, die nur die ersten vier Zeichen durchsucht. Den Rest an Binärdaten zu durchsuchen macht keinen Sinn und kostet unwahrscheinlich viel Zeit.
Wie kann ich die Textsuche reduzieren?
Peter
TC 10.xx / #266191
Win 10 x64
Win 10 x64
Vielleicht solltest Du Dich ja doch mal intensiver mit dem for Befehl beschäftigen. Und find dürfte nützlich sein, so dass das dann irgendwie
heißen müsste.
sheepdog
Code: Select all
for /f .... ('find "AC10") do ...
sheepdog
"A common mistake that people make when trying to design something
completely foolproof is to underestimate the ingenuity of complete fools."
Douglas Adams
completely foolproof is to underestimate the ingenuity of complete fools."
Douglas Adams

Ich galube, jetzt sprechen wir von etwas anderem: for, find, do sind doch DOS/CMD - Befehle, die über BATCH oder cmd ablaufen.
Ich möchte das aber im TC machen, und zwar nur in den ersten Zeichen. Der normale Suchbefehl nach BAK und Text ist kein Problem, ich möchte jedoch nicht 10.000 Daten mit je knapp 1 MB Binärdaten bis ins letzte durchsuchen ...
Peter
TC 10.xx / #266191
Win 10 x64
Win 10 x64
Es gibt keine Sucheinschränkung nach Offsets. Wenn es sie gäbe, müßten wir sie doch im Suchdialog sehen, oder?!?
Einzige Chance wäre per Regulärem Ausdruck: ^AC10
Findet alle AC10 am Zeilenanfang. Ein regulärer Ausdruck für den Dateianfang ist mir nicht bekannt...
Ich würde diese Spezialaufgabe mit dem Unixbefehl "head" lösen:
"head *.* -c4" spuckt die ersten vier Bytes aller Dateien im Verzeichnis aus plus deren Pfadname.
head.exe gibt's im UnxTools-Paket:
http://unxutils.sourceforge.net/
http://unxutils.sourceforge.net/UnxUtils.zip
http://unxutils.sourceforge.net/UnxUpdates.zip
Darin findest Du auch den Befehl "grep", mit dem Du die Ausgabe von "head" weiter aufschlüsseln kannst, wenn Du willst, so daß Du am Ende nur noch die Pfade der Dateitreffer angezeigt bekommst.
Was ist eigentlich aus Deinem anderen Problem geworden mit dem Kontextmenü? Hat das geklappt?
Icfu
Einzige Chance wäre per Regulärem Ausdruck: ^AC10
Findet alle AC10 am Zeilenanfang. Ein regulärer Ausdruck für den Dateianfang ist mir nicht bekannt...
Ich würde diese Spezialaufgabe mit dem Unixbefehl "head" lösen:
"head *.* -c4" spuckt die ersten vier Bytes aller Dateien im Verzeichnis aus plus deren Pfadname.
head.exe gibt's im UnxTools-Paket:
http://unxutils.sourceforge.net/
http://unxutils.sourceforge.net/UnxUtils.zip
http://unxutils.sourceforge.net/UnxUpdates.zip
Darin findest Du auch den Befehl "grep", mit dem Du die Ausgabe von "head" weiter aufschlüsseln kannst, wenn Du willst, so daß Du am Ende nur noch die Pfade der Dateitreffer angezeigt bekommst.
Was ist eigentlich aus Deinem anderen Problem geworden mit dem Kontextmenü? Hat das geklappt?
Icfu
InfoRapid Suchen & Ersetzen
nehme ich für sowas
http://www.inforapid.de/html/seladen.htm
siehe auch hier
http://ghisler.ch/board/viewtopic.php?t=322&highlight=inforapid
cu
Wawuschel
nehme ich für sowas
http://www.inforapid.de/html/seladen.htm
siehe auch hier
http://ghisler.ch/board/viewtopic.php?t=322&highlight=inforapid
cu
Wawuschel
TCmd 11.50b8 (64 bit) unter Windows 11 (64 bit)
#76996
#76996
@i cfu:
regulärer Ausdruck: Werde ich testen.
unix: Das ist mir völlig fremd, und ev. ist meine Lernphase (am sehr blockierten PC) um einiges länger als die Suchzeit des TC, wenn er wirklich die ganze Datei durchsucht.
Kontextmenü: Ja, hat geklappt. Danke für die Hilfe. Mit dem Essen kommt aber der Appetit - meine weiteren Wünsche habe ich schon gepostet.
http://www.ghisler.ch/board/viewtopic.php?t=4080
Peter
regulärer Ausdruck: Werde ich testen.
unix: Das ist mir völlig fremd, und ev. ist meine Lernphase (am sehr blockierten PC) um einiges länger als die Suchzeit des TC, wenn er wirklich die ganze Datei durchsucht.
Kontextmenü: Ja, hat geklappt. Danke für die Hilfe. Mit dem Essen kommt aber der Appetit - meine weiteren Wünsche habe ich schon gepostet.

http://www.ghisler.ch/board/viewtopic.php?t=4080
Peter
TC 10.xx / #266191
Win 10 x64
Win 10 x64
Du brauchst keine Unixkenntnisse, diese Tools sind GNU-Tools, die auf Windows portiert wurden.
Habe die beiden Dateien mal separat auf meinen Server hochgeladen:
http://icfu.i-networx.de/grep.exe
http://icfu.i-networx.de/head.exe
Kopier sie ins Windowsverzeichnis, damit Sie durch die Pathvariable abgedeckt sind.
Leg Dir eine Datei findheader.cmd an mit folgendem Inhalt:
head.exe -c4 -v *.* | grep -B1 "AC10" | grep "==>"
Leg Dir 'nen Button an, Kommando ..\findheader.cmd
Wechsle in das Verzeichnis, das die Dateien enthält, die Du untersuchen willst und drück den Button.
Du bekommst eine Liste ausgespuckt mit allen Dateien, deren erste vier Bytes "AC10" sind.
Icfu
Habe die beiden Dateien mal separat auf meinen Server hochgeladen:
http://icfu.i-networx.de/grep.exe
http://icfu.i-networx.de/head.exe
Kopier sie ins Windowsverzeichnis, damit Sie durch die Pathvariable abgedeckt sind.
Leg Dir eine Datei findheader.cmd an mit folgendem Inhalt:
head.exe -c4 -v *.* | grep -B1 "AC10" | grep "==>"
Leg Dir 'nen Button an, Kommando ..\findheader.cmd
Wechsle in das Verzeichnis, das die Dateien enthält, die Du untersuchen willst und drück den Button.
Du bekommst eine Liste ausgespuckt mit allen Dateien, deren erste vier Bytes "AC10" sind.
Icfu
- Walter Matter
- Junior Member
- Posts: 14
- Joined: 2003-10-09, 06:18 UTC
Manchmal würde es helfen, wenn sich Leute zuerst das Topic durchlesen würden:
Ich poste ja nicht aus Spaß an der Freud' so einen umständlichen Workaround, wenn es auch eine stinknormale Suche tun würde...
Dieses Feature wäre sehr wünschenswert. Also ghisler, hau rein, Wunschzetteleintrag Nummer 387.
Icfu
Es geht also um eine Suche BEGRENZT auf die ersten vier Bytes IN einer Datei.Ich brauche daher eine Textsuche in BAK, die nur die ersten vier Zeichen durchsucht. Den Rest an Binärdaten zu durchsuchen macht keinen Sinn und kostet unwahrscheinlich viel Zeit.
Ich poste ja nicht aus Spaß an der Freud' so einen umständlichen Workaround, wenn es auch eine stinknormale Suche tun würde...
Dieses Feature wäre sehr wünschenswert. Also ghisler, hau rein, Wunschzetteleintrag Nummer 387.

Icfu