Suche nach Dateien mit bestimmtem Text und kopiere diese Dateien in ein anderes Verzeichnis

Suche nach Dateien mit bestimmtem Text und kopiere diese Dateien in ein anderes Verzeichnis

Wie suche ich in einem Verzeichnis nach Dateien, die einen bestimmten Text enthalten, und kopiere sie in ein anderes Verzeichnis? Ich verwende die .ksh-Shell.

Antwort1

Tun Sie es man xargsund schauen Sie sich die -IFlagge an.

find /path/to/directory -type f -exec grep -il "your pattern" {} \; | xargs -I % cp % /dest/dir/

Um Tipparbeit zu sparen, geben Sie diesen Befehl in ein Shell-Skript ein:

#!/usr/bin/ksh 
# Script name: locate
find /path/to/directory -type f -exec grep -il "$1" {} \; | xargs -I % cp % /dest/dir/

locate searchstringGeben Sie zum Ausführen searchstringden gesuchten Text ein.

Antwort2

Sie können einfach vom Basisverzeichnis aus suchen

cp $(grep -r -l "the pattern" *) target_directory
  • grep -rbedeutet rekursiv
  • -lbedeutet, dass der Dateipfad aufgelistet wird, nicht die Übereinstimmung darin.

  • Durch das $()Umgeben des Befehls wird dieser ausgeführt und das Ergebnis an die Stelle im äußeren Befehl gestellt.

  • cp nimmt eine Liste von Dateien und kopiert sie alle dorthin, sofern der letzte Pfad ein Verzeichnis ist.

verwandte Informationen