Dateien nach Keys durchsuchen und in Ordner verschieben

hoxton

Neu angemeldet
Registriert
16 Dez. 2014
Beiträge
23
Hallo Leute,

ich möchte gerne einen Wust von XML-Dateien nach bestimmten Keyswords durchsuchen und entsprechend in verschiedene Unterordner verteilen. Wie ich die Dateien durchsuche, konnte ich schon in Erfahrung bringen. Mit grep -l 'Kaugummi' *.xml werden mir alle Dateien, die dieses Keyword enthalten, aufgelistet.

Wie aber bewege ich meinen Rechner nun dazu, all diese Dateien mit mv in den gewünschten Unterordner zu schieben? Irgendwie muss man diese Befehle ja verknüpfen können, nur bin ich da als Linux-Rookie aktuell etwas überfragt.

Könnt ihr mir da bitte etwas auf die Sprünge helfen?

hoxton :o
 
Verknüpfen kannst du das ganze mit einer sogenannten Pipe (|) welche auf der Tastatur neben dem Y findet.

Das ganze würde dann beispielsweise wie folgt aussehen.

grep -l 'Kaugummi' *.xml | xargs -I{} mv {} $Verzeichnis

Anstelle von $Verzeichnis musst du das Verzeichnis angeben in dem die Dateien mit dem gefundenen String landen sollen.
 
  • Thread Starter Thread Starter
  • #3
Danke, das klappt schon mal super. Kann ich mit einer weiteren Pipe eine weitere, ähnliche Operation anhängen und durchführen? Also nach einem weiteren Key suchen und die gefundenen Dateien in ein anderes Verzeichnis schieben? Oder sollte ich das mit & lösen?

[src=bash]grep -li 'Candy' *.xml | xargs -I{} mv {} /home/orders/downloads/dropshipper1 | grep -li 'Technaxx' *.xml | xargs -I{} mv {} /home/orders/downloads/dropshipper2[/src]

Oder?

[src=bash]grep -li 'Candy' *.xml | xargs -I{} mv {} /home/orders/downloads/dropshipper1 & grep -li 'Technaxx' *.xml | xargs -I{} mv {} /home/orders/downloads/dropshipper2[/src]
 
Wenn, dann so:

grep -li 'Candy' *.xml | xargs -I{} mv {} /home/orders/downloads/dropshipper1 && grep -li 'Technaxx' *.xml | xargs -I{} mv {} /home/orders/downloads/dropshipper2

Sollte irgendetwas in der Ausführung des ersten Befehls schief gehen, bleibt die Ausführung stehen. Der zweite Befehl wird nur ausgeführt wenn der erste Befehl fehlerfrei abgearbeitet wurde.

Es geht aber auch ohne Bedingungen, indem du die Befehle mit Semikolon trennst. Wobei mir das Doppelte kaufmännische UND lieber wäre, denn da sehe ich wenn Fehler auftreten.
 
Zuletzt bearbeitet:
Zurück
Oben