Sie sind nicht angemeldet.

  • »SorcererJB« ist männlich
  • »SorcererJB« ist der Autor dieses Themas

Beiträge: 11

Registrierungsdatum: 22.08.2011

Derivat: Ubuntu

Architektur: 64-Bit PC

  • Nachricht senden

1

17.09.2012, 23:12

find grep und exec

Ich verzweifle an einem vermeintlich einfachen Task...
Ich habe in einem Verzeichnis ca. 500 Text-Dateien, von denen manche den Suchbegriff abc enthalten (nicht im Dateinamen, sondern im Inhalt der Datei!)
Jetzt möchte ich genau die Dateien, die abc enthalten, in das Unterverzeichnis abc kopieren.
Ich hatte an so etwas gedacht: grep -l abc *.txt |exec cp...
Tja, und da scheitere ich. Mir will nicht in den Kopf, wie ich die Ergebnisse aus dem grep-Befehl, der mir ja wunderbar alle Dateien ausgibt, in denen abc vorkommt, an cp übergeben kann.
Irgendwie muss ich da wohl auch noch find mit reinnehmen, aber ich verstehe es nicht. Habe schon ewig rumgesucht, aber kein Beispiel gefunden, bei dem jemand etwas ähnliches machen wollte.
Kann mir einer von Euch helfen?
Wenn man Kühe nicht essen soll, warum sind sie dann aus Steak???

2

18.09.2012, 23:46

Wie kommst du auf "exec"?

Quellcode

1
grep -l abc *.txt | xargs -i cp {} /zielpfad/
Funktioniert aber so nur im aktuellen Verzeichnis, nicht rekursiv.

PS: Könntest du, da du mal wieder da bist, deine alten Themen auf gelöst/erledigt setzen?
Beim Erstellen dieser Nachricht kamen keine Tiere zu Schaden.
me is all sausage
but don't call me Ferdl

  • »SorcererJB« ist männlich
  • »SorcererJB« ist der Autor dieses Themas

Beiträge: 11

Registrierungsdatum: 22.08.2011

Derivat: Ubuntu

Architektur: 64-Bit PC

  • Nachricht senden

3

19.09.2012, 19:12

Danke, das war's! exec hatte ich irgendwo gelesen, allerdings nur im Zusammenhang mit find. Wie auch immer, Deine Lösung funktioniert einwandfrei, vielen Dank!

Das mit dem "Schließen" der alten Threads hatte ich noch gar nicht gekannt, sorry. Ich mache mich gleich mal auf die Suche...
Wenn man Kühe nicht essen soll, warum sind sie dann aus Steak???

4

20.09.2012, 00:06

exec hatte ich irgendwo gelesen, allerdings nur im Zusammenhang mit find
Ja, da ist es aber eine Option, kein Kommando. ->

Quellcode

1
find -maxdepth 1 -name "*.txt" -exec cp -v \{\} /zielpfad/ \;
Ist aber komplizierter hinzuschreiben, finde ich.

"exec" selbst gibt es auch als eingebautes Kommando in der Bash, aber damit beendet sie sich selbst und startet das angegebene Programm. Ist sicher nicht das, was du wolltest.

--
Wenn das Problem damit gelöst/erledigt ist setze bitte noch das passende Präfix vor die Überschrift, damit das jeder gleich erkennen kann. Einfach den ersten Beitrag "bearbeiten" -> Präfix setzen. Danke!
Beim Erstellen dieser Nachricht kamen keine Tiere zu Schaden.
me is all sausage
but don't call me Ferdl

  • »floogy« ist männlich

Beiträge: 3 071

Registrierungsdatum: 10.03.2005

Derivat: Ubuntu

Architektur: 64-Bit PC

Desktop: GNOME 3.0

Andere Betriebssysteme: debian

  • Nachricht senden

5

20.09.2012, 09:36

Ich escape {} nicht, aber schon das Semikolon.

6

20.09.2012, 12:44

Ich escape {} nicht
Ich halte mich als braver Bürger an die man-page :)
Beim Erstellen dieser Nachricht kamen keine Tiere zu Schaden.
me is all sausage
but don't call me Ferdl

  • »floogy« ist männlich

Beiträge: 3 071

Registrierungsdatum: 10.03.2005

Derivat: Ubuntu

Architektur: 64-Bit PC

Desktop: GNOME 3.0

Andere Betriebssysteme: debian

  • Nachricht senden

7

20.09.2012, 12:50

Sehr brav :thumbup: , das mache ich eigentlich nie ;)
Dafür habe ich allerdings die single quotes unterschlagen, die ich statt dessen verwende: '{}'