Dateien in Unix finden, die mehrere Strings beinhalten
Hallo liebe Leute,
ich versuche über die Shell unter Unix alle Dateien ausfindig zu machen, die sowohl den SuchstringA als auch den SuchstringB enthalten. Die gefunden Dateien will ich mir in eine txt-Datei ausgeben lassen.
Dateien zu finden, die nur einen Suchstring enthalten, habe ich schon hinbekommen:
("grep -r" geht leider nicht auf dem System)
Ich weiß aber leider nicht wie ich den SuchstringB unter bekommen soll.
Vielen Dank schon mal
ich versuche über die Shell unter Unix alle Dateien ausfindig zu machen, die sowohl den SuchstringA als auch den SuchstringB enthalten. Die gefunden Dateien will ich mir in eine txt-Datei ausgeben lassen.
Dateien zu finden, die nur einen Suchstring enthalten, habe ich schon hinbekommen:
find /SuchVerzeichnis/ -type f -exec grep -li SuchstringA {} \; >> Ergebnis.txt
("grep -r" geht leider nicht auf dem System)
Ich weiß aber leider nicht wie ich den SuchstringB unter bekommen soll.
Vielen Dank schon mal
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 347611
Url: https://administrator.de/contentid/347611
Ausgedruckt am: 22.11.2024 um 19:11 Uhr
7 Kommentare
Neuester Kommentar
find /Sucherzeichnis/. -type f -regextype posix-extended -iregex '^.*/.*SuchstringA.*SuchstringB.*' >Datei.txt
find /Sucherzeichnis/ -type f | grep '.*/.*SuchstringA.*SuchstringB.*$' >Datei.txt
Doch geht beides (getestet)!!, nur kennen wir hier eben dein verwendetes System nicht.
Beim Grep kannst du statt -P auch -E nehmen...
Beim Grep kannst du statt -P auch -E nehmen...
Ich kenne das Sys leider auch nicht so genau. :/
Oh man, Koppschüttel ....Sehe gerade das du eine Und- statt eine Oder-Verknüpfung brauchst dann geht's natürlich so ...
find /Sucherzeichnis/ -type f | grep '.*/.*SuchstringA.*SuchstringB.*$' >Datei.txt
Moin,
das ist eigentlich recht trivial, wenn grep die Option -l kennt:
und xargs vorhanden ist:
Ansonsten kannst Du auch mit "Backticks" arbeiten, um die Dateinamen aus Ergebnis.txt als Parameter an grep zu übergeben:
Alternativ:
lks
das ist eigentlich recht trivial, wenn grep die Option -l kennt:
-l, --files-with-matches
Suppress normal output; instead print the name of each input file from which output would
normally have been printed. The scanning will stop on the first match. (-l is specified by POSIX.)
und xargs vorhanden ist:
find /SuchVerzeichnis/ -type f | xargs grep -l "SuchStringA" | xargs grep -l "SuchstringB" | xargs grep -l "SuchstringC" | .... | tee Ergebnis-Dateien-mit-allen-Suchstrings.txt
Ansonsten kannst Du auch mit "Backticks" arbeiten, um die Dateinamen aus Ergebnis.txt als Parameter an grep zu übergeben:
grep -l "SuchstringB" `cat ergebnis.txt` >>neues-ergebnis.txt
Alternativ:
grep -l "SuchstringB" $(cat ergebnis.txt) >>neues-ergebnis.txt
lks