Ich möchte einen Befehl (oder wahrscheinlich eine Option für cp), der das Zielverzeichnis erstellt, wenn es nicht existiert.
Beispiel:
cp -? file /path/to/copy/file/to/is/very/deep/there
Ich möchte einen Befehl (oder wahrscheinlich eine Option für cp), der das Zielverzeichnis erstellt, wenn es nicht existiert.
Beispiel:
cp -? file /path/to/copy/file/to/is/very/deep/there
Sie können verwenden find
mit Perl
. Der Befehl wird so lauten:
find file | perl -lne '$t = "/path/to/copy/file/to/is/very/deep/there/"; /^(.+)\/.+$/; `mkdir -p $t$1` unless(-d "$t$1"); `cp $_ $t$_` unless(-f "$t$_");'
Mit diesem Befehl wird das Verzeichnis $t
wenn sie nicht existiert. Und dann kopieren file
in $t
nur wenn file
existiert innerhalb $t
.
Dies funktioniert mit GNU /bin/bash Version 3.2 unter MacOS (getestet auf Catalina und Big Sur)
cp -Rv <existing-source-folder>/ <non-existing-2becreated-destination-folder>
die Option "v" steht für "ausführlich".
Und die Option "-R" steht für "Rekursiv".
man's full description of -R is:
Wenn source_file ein Verzeichnis angibt, kopiert cp das Verzeichnis und den gesamten Teilbaum, der an diesem Punkt angeschlossen ist. Wenn die Quelldatei mit einem / endet, wird der Inhalt des Verzeichnisses kopiert und nicht das Verzeichnis selbst. Diese Option bewirkt auch, dass symbolische Links kopiert werden, anstatt sie umzuleiten, und dass cp spezielle Dateien erstellt, anstatt sie als normale Dateien zu kopieren. Die erstellten Verzeichnisse haben den gleichen Modus wie das entsprechende Quellverzeichnis, unverändert durch die umask des Prozesses.
Im Modus -R setzt cp den Kopiervorgang auch dann fort, wenn Fehler entdeckt werden.
Beachten Sie, dass cp hart verlinkte Dateien als separate Dateien kopiert. Wenn Sie harte Links beibehalten müssen, sollten Sie stattdessen tar(1), cpio(1) oder pax(1) verwenden.
Im folgenden Beispiel verwende ich ein "/" am Ende von existingfolder, damit der gesamte Inhalt von existingfolder (und nicht der Ordner selbst) in newfolder kopiert wird:
cp -Rv existingfolder/ newfolder
Versuchen Sie es.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.
0 Stimmen
縡 Wie man den cp-Befehl alle notwendigen Ordner für das Kopieren einer Datei an einen Zielort erstellen lässt
9 Stimmen
Die akzeptierte Antwort ist falsch (es gibt eine solche Option für cp). Siehe zweite Antwort von Paul Whipp.
1 Stimmen
@Ronenz, ich stimme zu, dass es eine erwähnenswerte Option in GNU gibt
cp
(wie von Paul Whipp beantwortet), aber es ist nicht so allgemein, wie es der OP wollte. Sie kann kopierena/foo/bar/file
までb/foo/bar/file
aber er kann nicht kopierenfile
までb/foo/bar/file
. (d. h. es funktioniert nur, um übergeordnete Verzeichnisse zu erstellen, die im Fall der ersten Datei bereits vorhanden waren, aber es kann keine beliebigen Verzeichnisse erstellen)3 Stimmen
Das sieht nach einem netten Feature-Wunsch für cp aus. Besteht die Möglichkeit, dass wir in naher Zukunft einen solchen Befehlszeilenschalter bekommen?
0 Stimmen
Die akzeptierte Antwort ist teilweise richtig und die zweite Antwort gibt Ihnen diese Möglichkeit nicht. Die Probleme liegen bei
mkdir
Teil. Wie man es im Inneren implementiertcp
Befehl.