2016-08-12 3 views
0

Ich habe folgenden Bash-Skript:Kopieren gefunden Verzeichnis Pfad angegebenes Argument gebaut und gefunden Verzeichnis

cd root_folder && find folder1 folder2 -name "doc" -exec cp -r --parents {} $1{} \; 

Die Idee, alle Ordner von root_folder Start doc unter folder1 und folder2 und Kopieren der Struktur mit dem Namen zu finden ist der Pfad, der durch das Argument des Benutzers angegeben wird (zusammen mit dem gesamten Inhalt von doc).

So zum Beispiel

root_folder/folder1/other_folder/doc 

wird:

$1/folder1/other_folder/doc 

Dieses Skript funktioniert, solange ich der Benutzer den Ordner nicht angeben müssen kopiert werden, das heißt, wenn ich nicht tun habe die $1. Allerdings, wenn ich es tun, erhalte ich die Fehlermeldung:

cp: with --parents, the destination must be a directory 
Try `cp --help' for more information. 

Dies trotz der Tatsache, dass 1) Ich versichern, daß der angegebene Ordner existiert vorher, und 2) Wenn ich Ausgang für den vollständige Pfad zu kopieren, es sieht genau so aus, wie es sein sollte, dh $1/folder1/other_folder/doc.

Ich habe auch versucht, eine / nach $1 Zugabe $1/{} zu machen, aber das gibt einen Schrägstrich zu viele, den Weg machen // enthalten, die offensichtlich falsch ist.

Was fehlt mir hier?

Antwort

0

Die Antwort wurde hinzugefügt dirname zum Zielpfad:

cd root_folder && find folder1 folder2 -name "doc" -exec cp -r --parents {} `dirname $1/{}` \; 
Verwandte Themen