Saya ingin cp aaa/deep/sea/blob.psd ke bbb/deep/sea/blob.psd
Bagaimana cara menyalin jika deep dan sea direktori tidak ada di bawah bbb sehingga salinan keduanya membuat direktori yang diperlukan dan menyalin file?
Saat ini saya mendapatkanNo such file or directory karena dalam dan laut tidak ada.
Saya melihat melalui halaman bantuan manual dan pertanyaan lain, tetapi tidak ada yang mengejutkan saya.
Yang paling dekat yang saya punya adalah menggunakan rcp untuk direktori:
rcp -r aaa/deep/sea/ bbb/deep/sea/
meskipun ini menyalin seluruh direktori dan konten dan saya hanya ingin satu file. Namun mencoba melakukan itu memberi cp: cannot create regular file bbb/deep/sea/blob.psd' such file or directory
Jawaban yang Diterima:
Coba gunakan fungsi berikut untuk situasi seperti ini:
copy_wdir() { mkdir -p -- "$(dirname -- "$2")" && cp -- "$1" "$2" ; }
dan gunakan sebagai
copy_wdir aaa/deep/sea/blob.psd bbb/deep/sea/blob.psd
Omong-omong, GNU cp memiliki --parents pilihan. Ini benar-benar dekat dengan apa yang Anda inginkan, tetapi tidak persis.
Ini juga akan membuat aaa direktori yang sepertinya tidak Anda butuhkan. Namun Anda dapat melakukan cd terlebih dahulu ke aaa dan salin seperti:
cd aaa && cp --parents deep/sea/blob.psd ../bbb/