Ich möchte cp aaa/deep/sea/blob.psd
cp zu bbb/deep/sea/blob.psd
Wie mache ich das Kopieren, wenn der deep
und sea
Verzeichnisse existieren nicht unter bbb
damit die Kopie sowohl die benötigten Verzeichnisse erstellt als auch die Datei kopiert?
Im Moment erhalte ichNo such file or directory
wie es Tiefe und Meer nicht gibt.
Ich habe die Hilfeseiten und andere Fragen durchgesehen, aber mir fällt nichts auf.
Am nächsten kommt mir die Verwendung von rcp
für das Verzeichnis:
rcp -r aaa/deep/sea/ bbb/deep/sea/
obwohl dies das gesamte Verzeichnis und den Inhalt kopiert und ich nur die eine Datei möchte. Der Versuch, dies zu tun, führte jedoch zu cp: cannot create regular file bbb/deep/sea/blob.psd' such file or directory
Akzeptierte Antwort:
Versuchen Sie, diese nächste Funktion für eine solche Situation zu verwenden:
copy_wdir() { mkdir -p -- "$(dirname -- "$2")" && cp -- "$1" "$2" ; }
und verwenden Sie es als
copy_wdir aaa/deep/sea/blob.psd bbb/deep/sea/blob.psd
Übrigens, GNU cp
hat einen --parents
Möglichkeit. Es ist wirklich nah an dem, was Sie wollen, aber nicht genau.
Es wird auch aaa
erstellt Verzeichnis, das Sie anscheinend nicht benötigen. Sie können jedoch zuerst auf aaa
cd und kopiere wie:
cd aaa && cp --parents deep/sea/blob.psd ../bbb/