Das hat bei mir funktioniert, als ich nach Dateien mit einem bestimmten Datum gesucht habe:
ls | grep '2018-08-22' | xargs -I '{}' cp '{}' ~/data/lidar/tmp-ajp2/
Um Dateien in grep gefundene Verzeichnisse zu kopieren, verwenden Sie -printf, um Verzeichnisse auszugeben, und -i, um das Befehlsargument von xarg (nach Pipe) zu platzieren
find ./ -name 'filename.*' -print '%h\n' | xargs -i cp copyFile.txt {}
dies kopiert copyFile.txt in alle Verzeichnisse (in ./), die "filename"
enthaltengrep -l -r "TWL" --exclude=*.csv* | xargs cp -t ~/data/lidar/tmp-ajp2/
Erklärung:
- grep
-l
Option nur Dateinamen auszugeben - xargs zum Konvertieren der Dateiliste von der Standardeingabe in Befehlszeilenargumente
- vgl.
-t
Option zur Angabe des Zielverzeichnisses (und Vermeidung von Platzhaltern)
Sie brauchen xargs mit dem Platzhalter Möglichkeit:
grep -r "TWL" --exclude=*.csv* | xargs -I '{}' cp '{}' ~/data/lidar/tmp-ajp2/
normalerweise, wenn Sie xargs
verwenden , wird die Ausgabe hinter gesetzt der Befehl, mit dem Platzhalter ('{}'
in diesem Fall), können Sie den Ort, an dem es eingefügt wird, auch mehrmals auswählen.