Suchtool gesucht (nach Inhalt, für Windows 10)

Sergeant123

Lt. Junior Grade
Registriert
Sep. 2009
Beiträge
366
Hallo Forum,

Ich möchte auf meiner SSD alle .txt durchsuchen und es sollen nur die gefunden werden, die in einer bestimmten Zeile einen bestimmten Text stehen haben.

Zum Beispiel "XYZ" am Anfang von Zeile 100

Kennt jemand so ein Tool?

Dake schonmal für jeden Tipp.
 
Schau dir mal Everything an. Die Dateisuche ist sehr schnell. Suche nach in Dateiinhalten geht auch, aber leider nicht ganz so schnell. Per Filter kann man die Suche auf z.B. Dateitypen einschränken.

Edit:
Gerade nochmal geschaut: Anscheinend kann man per "line-count:" auch Zeilen angeben. Habe ich aber nie probiert.

https://www.voidtools.com/forum/viewtopic.php?t=10176#linecount
 
Zuletzt bearbeitet:
Also Textdateien nach Inhalt durchsuchen kann Double Commander (d.h wahrscheinlich auch Total Commander). Aber ob es das auch noch nach Zeile kann, da bin ich ehrlich gesagt überfragt, diese Tools sind recht mächtig. ggf. müsste man dort im Forum nachfragen.
 
Sergeant123 schrieb:
Zum Beispiel "XYZ" am Anfang von Zeile 100
Kommt der Ausdruck denn öfter in der Datei und auch vor der 100. Zeile vor?
Ergänzung ()

Hirschschnaps schrieb:
Also Textdateien nach Inhalt durchsuchen kann Double Commander
Kann auch Notepad++ auch aber man kann da keine Zeile angeben oder nur über komplizierte Reguläre Ausdrücke.
 
Zuletzt bearbeitet:
sikarr schrieb:
Kommt der Ausdruck denn öfter in der Datei und auch vor der 100. Zeile vor?
Ja, der Ausdruck kann öfter vorkommen, muss aber mindestens am Anfang von Zeile 100 vorkommen.
 
Das wäre ein Beispiel für Bash/LInux:

Bash:
#!/bin/bash
SAVEIFS=$IFS
IFS=$(echo -en "\n\b")
# ./traverse-find-files-by-type . Term "^23" 100

regex=${3}
if [[ ! ${4} ]]; then
    lines=100
else
    lines=${4}
fi

function traverse() {  
    for file in $(ls  "$1")
    do
        if [[ ! -d ${1}/${file} ]]; then
            `echo " ${1}/${file}" | grep -q "${2}" - `
            if [ $? == 0 ]; then
                `head -n $lines  ${1}/${file} | tail -n 1  | grep -q -e $regex - `
                if [ $? == 0 ]; then
                    read -d ' ' test <<< `wc -l  "${1}/${file}"`
                    if (( $test >= $lines)); then echo " ${1}/${file}"; fi
                fi
            fi
        else
            traverse "${1}/${file}"
        fi
    done
}

function main() {
    traverse "$1"
}

main "$1"

IFS=$SAVEIFS

Aufzurufen mit siehe in 4. Zeile, Startverzeichnis, Dateinamen(erweiterung .txt zB.), und Regex-Suchoption in 100.Zeile.

edit:
Aktualisiert
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: sikarr
Hier mal als Powershell script:
PowerShell:
$Suchpfad = "<Suchpfad>" # Pfad in dem gesucht werden soll, Unterordner eingeschlossen
$Suchstring = "<Suchausdruck>" # Suchausdruck
[int]$ZeilenAnzahl = 99 # Zeile in der Ausdruck erwartet wird (Zählung beginnt bei 0)
[int]$MaxZeilen = 100 # nur Datein mit min. dieser Anzahl an Zeilen werden beachtet

$txtfiles = Get-ChildItem $Suchpfad -Recurse | Where-Object {$_.Extension -eq ".txt"}

foreach ($file in $txtfiles) {
    $txtfile = Get-Content $file.FullName
    IF($txtfile.Count -ge $MaxZeilen){
        $Zeile = ($txtfile[$ZeilenAnzahl]) | Where-Object {$_ -match $Suchstring}
        If ($Zeile){
              Write-Host "gefunden"
        }
    }
}
 
  • Gefällt mir
Reaktionen: HITCHER_I
Zurück
Oben