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/