problem mit find und grep
problem mit find und grep
Hallo Leute
Ich hoffe auf Hilfe bei euch.
Ich möchte in einen Verzeichnis die Dateien nach ein Stichwort durchsuchen und wenn das
Stichwort enthalten ist in ein anderen Verzeichnis verschieben, die restlichen Dateien sollen
unberührt bleiben.
Mit der Befehlszeile komme ich nicht richtig weiter:
find /verzeichnis/A/ -exec grep -i 'suchwort' /dev/null -exec mv {} /zielverzeichnis/working \;
mit den befehl finde ich zwar die Dateien mit den gesuchten Inhalt, habe
dann eine Ausgabe welche Dateien, aber ich muss dann alles mit Hand verschieben.
find /verzeichnis/A/ -exec grep - i 'suchwort' /dev/null {} \;
Vielen dank für die Hilfe
Gruß Dennis
Ich hoffe auf Hilfe bei euch.
Ich möchte in einen Verzeichnis die Dateien nach ein Stichwort durchsuchen und wenn das
Stichwort enthalten ist in ein anderen Verzeichnis verschieben, die restlichen Dateien sollen
unberührt bleiben.
Mit der Befehlszeile komme ich nicht richtig weiter:
find /verzeichnis/A/ -exec grep -i 'suchwort' /dev/null -exec mv {} /zielverzeichnis/working \;
mit den befehl finde ich zwar die Dateien mit den gesuchten Inhalt, habe
dann eine Ausgabe welche Dateien, aber ich muss dann alles mit Hand verschieben.
find /verzeichnis/A/ -exec grep - i 'suchwort' /dev/null {} \;
Vielen dank für die Hilfe
Gruß Dennis
- heisenberg
- Beiträge: 4123
- Registriert: 04.06.2015 01:17:27
- Lizenz eigener Beiträge: MIT Lizenz
Re: problem mit find und grep
Hallo dfo,
find und grep sind schon einmal die richtigen Kandidaten. Die Anwendung stimmt allerdings noch nicht so ganz. Da ist vielleicht nochmal ein bisschen die Lektüre der Manpages hilfreich.
find /verzeichnis/A/ -exec grep - i 'suchwort' /dev/null {} \;
Hiermit suchst Du in /verzeichnis/A und zwar in jedem enthaltenene Verzeichnis und jeder Datei den blauen grep Befehl aus. Das /dev/null, was Du hier zusätzlich durchsuchst ist hier überflüssig. Wahrscheinlich möchtest Du die Fehlerausgabe umleiten, was dann so geht:
find /verzeichnis/A/ -exec grep - i 'suchwort' {} \; 2>/dev/null
Bei Deinem speziellen Problem brauchst Du find eigentlich gar nicht zu bemühen - grep reicht schon aus:
grep -lr "suchwort" /verzeichnis/A/
Jetzt hast Du die Liste von Dateien die dich interessiert. Die kannst Du jetzt einlesen und kopieren:
Die Anführungszeichen um $dateiname sind wichtig. Falls dateiname ein Leerzeichen enthält schützen die Anführungszeichen davor, das ein Dateinamen in mehrere Parameter aufgeteilt wird, was mit Sicherheit zu Fehlern bei der Ausführung führen wird.
find und grep sind schon einmal die richtigen Kandidaten. Die Anwendung stimmt allerdings noch nicht so ganz. Da ist vielleicht nochmal ein bisschen die Lektüre der Manpages hilfreich.
find /verzeichnis/A/ -exec grep - i 'suchwort' /dev/null {} \;
Hiermit suchst Du in /verzeichnis/A und zwar in jedem enthaltenene Verzeichnis und jeder Datei den blauen grep Befehl aus. Das /dev/null, was Du hier zusätzlich durchsuchst ist hier überflüssig. Wahrscheinlich möchtest Du die Fehlerausgabe umleiten, was dann so geht:
find /verzeichnis/A/ -exec grep - i 'suchwort' {} \; 2>/dev/null
Bei Deinem speziellen Problem brauchst Du find eigentlich gar nicht zu bemühen - grep reicht schon aus:
grep -lr "suchwort" /verzeichnis/A/
Jetzt hast Du die Liste von Dateien die dich interessiert. Die kannst Du jetzt einlesen und kopieren:
Code: Alles auswählen
grep -lr "suchwort" /verzeichnis/A | while read dateiname ; do
mv "$dateiname" /verzeichnis/neuer_ordner
done
Re: problem mit find und grep
Hallo heisenberg
Vielen dank für deine Hilfe.
Mein Ansatz war so total Falsch, aber so ist es wenn man am lernen ist,
aus Fehlern lernt man ja dazu.
Ich hab wohl zu viel gedacht.
Deine Lösung funktioniert nun und ich habe es in ein Script gepackt mit einer Ergänzung.
Der Parameter sorgt dafür das Groß- und Kleinschreibung nicht beachtet werden.
Nun werden die Log Dateien die wichtig sind direkt im Verzeichnis abgelegt und ich sehe
wenn Fehler auflaufen und kann mich schnell darum kümmern.
Vielen Danke
Vielen dank für deine Hilfe.
Mein Ansatz war so total Falsch, aber so ist es wenn man am lernen ist,
aus Fehlern lernt man ja dazu.
Ich hab wohl zu viel gedacht.
Deine Lösung funktioniert nun und ich habe es in ein Script gepackt mit einer Ergänzung.
Code: Alles auswählen
grep -lr -i "suchwort" /suchverzeichnis | while read dateiname ; do
mv "$dateiname" /zielverzeichnis
done
Nun werden die Log Dateien die wichtig sind direkt im Verzeichnis abgelegt und ich sehe
wenn Fehler auflaufen und kann mich schnell darum kümmern.
Vielen Danke
Re: problem mit find und grep
Hallo Leute
Jetzt hat es sich so ergeben das ich nochmal Hilfe brauche,
ich möchte gerne wenn ich eine Dateien gefunden habe, das dann das Gesamte Verzeichnis
verschoben wird, mitgesamt des gesamten Inhaltes, aber nur das Verzeichnis das die Datei enthält.
Ich hab gerade gar keine Idee wie und wo ich ansetzen muss.
Wäre wieder über Hilfe hier sehr dankbar.
Jetzt hat es sich so ergeben das ich nochmal Hilfe brauche,
ich möchte gerne wenn ich eine Dateien gefunden habe, das dann das Gesamte Verzeichnis
verschoben wird, mitgesamt des gesamten Inhaltes, aber nur das Verzeichnis das die Datei enthält.
Ich hab gerade gar keine Idee wie und wo ich ansetzen muss.
Wäre wieder über Hilfe hier sehr dankbar.
- heisenberg
- Beiträge: 4123
- Registriert: 04.06.2015 01:17:27
- Lizenz eigener Beiträge: MIT Lizenz
Re: problem mit find und grep
Die Bash-Funktion dirname zeigt Dir das Verzeichnis aus einem absoluten Dateinamen.
Code: Alles auswählen
dirname /path/to/file # -> "/path/to"
Re: problem mit find und grep
z.b. dann sowas?
grep -lr -i "suchwort" /suchverzeichnis | while read dirname / ; do
mv "$dirname" /zielverzeichnis
done
grep -lr -i "suchwort" /suchverzeichnis | while read dirname / ; do
mv "$dirname" /zielverzeichnis
done
- heisenberg
- Beiträge: 4123
- Registriert: 04.06.2015 01:17:27
- Lizenz eigener Beiträge: MIT Lizenz
Re: problem mit find und grep
Hallo dfo,
ich empfehle Dir, Dich mal etwas mit Shellscripting zu beschäftigen, um Dir die Grundlagen anzueignen.
http://openbook.rheinwerk-verlag.de/she ... ammierung/
Grüße,
h.
ich empfehle Dir, Dich mal etwas mit Shellscripting zu beschäftigen, um Dir die Grundlagen anzueignen.
http://openbook.rheinwerk-verlag.de/she ... ammierung/
Grüße,
h.
Re: problem mit find und grep
Hi
Danke für den Link, sowas hat gefehlt, ich muss mal so sagen, ich bin jetzt umgezogen und leider konnte ich 2 Monate gar nix mehr machen,
jetzt muss ich wieder eher am Anfang anfangen.
Danke für deine Hilfe.
Gruß Dennis
Danke für den Link, sowas hat gefehlt, ich muss mal so sagen, ich bin jetzt umgezogen und leider konnte ich 2 Monate gar nix mehr machen,
jetzt muss ich wieder eher am Anfang anfangen.
Danke für deine Hilfe.
Gruß Dennis