Archiv verlassen und diese Seite im Standarddesign anzeigen : script: find and copy
Hallo,
ich bin ein Script am basteln. Ich möchte alle Dateien rekursiv ab einem bestimmten Pfad zu einem anderen bestimmten pfad kopieren.
Ich bräuchte nun kurz Hilfe beim pipen der gefundenen Dateien. Der Suchbefehl sieht so aus:
find $path/ -type f
Nun möcht ich die Resultate, sprich die Ausgabe von find gleich nutzen um die gefundenen Dateien zu kopieren. Ich stell mir das ungefähr so vor:
find $path/ -type f | cp X $dest/
..wobei X eine einzelne gefundene Datei sein soll.
Nur, was ist X? ..sprich, wie heisst die output variable von find? ;)
Guck Dir mal die Manpage zu Find an.
Es gibt da den schönen Parameter -exec.
Gruß
Thomas
hi,
ermstma die virtuelle verhaue.... *G*
---snip---
man find
---snap---
wäre dein freund gewesen...
und weil ich gerade gut drauf bin
---snip---
find $quelle -type f -exec cp {} $ziel \;
---snap---
Hi,
vielen Dank für die Infos. Ich konnte das nun auch im <man> nachvollziehen.
das nächste mal schau ich besser hin bevor ich hier frage, versprochen !!
danke nochmals & grüsse 223
Oder so:
find $quelle -type f -print0 | xargs -0 cp -t $ziel
Letzteres ist vor allem dann sinnvoll, wenn es zuviele Dateien werden. Bei -exec wird cp eine Liste von Dateien übergeben. Irgendwann beschwert sich cp das es zuviele Argumente sind. Bei xargs wird für jeden Treffer ein eigener Prozess gestartet. Sicherlich etwas aufwendiger, aber bei vielen tausend Dateien das Mittel der Wahl. Alternativ das Suchergebnis von find mittels tar einpacken und am Ziel wieder auspacken. ;)
Mit einer for Schleife geht es auch.
for a in $(find $path -type f); do cp $a $zielpfad; done;
Greeez Oli
Hallo,
ich bin ein Script [...]
Das finde ich doch mal klasse, dass sich die problembehafteten Skripte nun hier schon selbst melden und es nicht ihrem ahnungslosen Programmierer überlassen.
Hallo,
ich bin ein Script am basteln[...]
Auch schön, dass dieses Skript sich gerade im Klaren darüber ist, dass es bastelt und die Wege der systematischen Selbstheilung verlassen hat.
- sorry, aber das hat sich so nett angehört -
Bei -exec wird cp eine Liste von Dateien übergeben. Irgendwann beschwert sich cp das es zuviele Argumente sind. Bei xargs wird für jeden Treffer ein eigener Prozess gestartet.
Mööp, falsch, grad anders herum.
Mit -exec wird pro gefundener Datei ein Prozess gestartet. Wenn du allerdings xargs verwendest wird alles auf einmal überlegen.
Überprüfen kannst du's z.B. per "ll | xargs echo" ;)
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.