GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana Menyalin File Dan Membuat Direktori Target Pada Saat Yang Sama?

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 mendapatkan
No 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/

Linux
  1. Cara Menyalin File Dan Mengubah Kepemilikan, Izin Pada Saat Yang Sama

  2. Output Ke Stdout Dan Pada Saat Yang Sama Grep Ke File?

  3. Cara Membuat dan Query Sistem File BTRFS

  1. Cara menyalin file ke banyak direktori menggunakan perintah gnu cp

  2. Ping dan tcpdump secara bersamaan

  3. Linux:Bagaimana cara menggunakan file sebagai input dan output secara bersamaan?

  1. Cara Membuat &Mengedit File .htaccess WordPress Default

  2. Cara Mendapatkan Tanggal dan Waktu Saat Ini dengan Python

  3. Salin dan chmod/chown secara bersamaan