Bagaimana cara menyalin folder dengan file ke folder lain di Unix / Linux? [Tutup]

1192

Saya mengalami beberapa masalah untuk menyalin folder dengan file di folder itu ke folder lain. Perintah cp -rtidak menyalin file di folder.

pengguna2080656
sumber
Saya berharap ini bisa dimigrasikan ke SE di mana itu lebih pada topik.
jrh
6
Pemrograman bash sesuai topik .
xskxzr

Jawaban:

1980

Opsi yang Anda cari adalah -R.

cp -R path_to_source path_to_destination/
  • Jika destinationtidak ada, itu akan dibuat.
  • -Rberarti copy directories recursively. Anda juga dapat menggunakan -rkarena case-insensitive.
  • Perhatikan nuansa dengan menambahkan trailing /sesuai komentar @ muni764 .
Pierre Salagnac
sumber
5
saya bertanya-tanya mengapa perintah yang tepat ini di dockerfile menyalin semua file direktori sumber ke tujuan, daripada menyalin hanya seluruh direktori.
holms
4
Saya percaya '/' pada akhirnya membuat perbedaan dan itu mungkin menjelaskan pengalaman Anda. Jika sumber menyertakan trailing slash, ia akan menyalin apa yang ada di direktori saja. Jika tidak termasuk garis miring, itu akan menyalin direktori juga dan kemudian isi di dalamnya. Ingatan saya adalah perilaku ini bervariasi berdasarkan perintah dan mungkin acara oleh OS sedikit. Ini referensi dengan info lebih lanjut.
OllieBrown
23
Saya akan mengatakan jika Anda tidak ingin menyertakan sumber dan Anda ingin memastikan semuanya disalin (symlink, file tersembunyi) tanpa menyalin folder induk sumber adalah dengan menggunakan -ra sumber /. tujuan. Ini akan memastikan konten folder disalin, tetapi bukan folder induk itu sendiri, yang terkadang berguna. Dan perbedaannya adalah /.
muni764
Ini juga tampaknya berfungsi dengan benar jika direktori yang akan disalin adalah tautan simbolik, yang merupakan kasus penggunaan saya.
Gdalya
3
Perhatikan pentingnya "Slash dot" pada sumber Anda di cp -r src/. destSaya tahu itu disebutkan tetapi saya sepertinya masih melewatkannya setiap waktu.
bbeecher
368

Anda mencari cpperintah. Anda perlu mengubah direktori sehingga Anda berada di luar direktori yang Anda coba salin.

Jika direktori yang Anda salin dipanggil dir1dan Anda ingin menyalinnya ke /home/Picturesfolder Anda :

cp -r dir1/ ~/Pictures/

Linux peka terhadap huruf besar-kecil dan juga perlu /setelah setiap direktori untuk mengetahui bahwa itu bukan file. ~adalah karakter khusus di terminal yang secara otomatis mengevaluasi ke direktori home pengguna saat ini. Jika Anda perlu tahu direktori apa yang Anda gunakan, gunakan perintahpwd .

Ketika Anda tidak tahu cara menggunakan perintah Linux, ada halaman manual yang bisa Anda rujuk dengan mengetik:

man [insert command here]

di terminal prompt.

Juga, untuk secara otomatis menyelesaikan jalur file panjang ketika mengetik di terminal, Anda dapat menekan Tabsetelah Anda mulai mengetik jalur dan Anda akan disajikan dengan pilihan, atau itu akan memasukkan bagian yang tersisa dari jalur.

Alex W
sumber
6
Untuk memperjelas lebih lanjut, -ropsi dalam hal ini akan menyalin direktori secara rekursif.
TVann
5
Apakah OP tidak menentukan bahwa ia telah menggunakan cp -rperintah, tetapi itu tidak bekerja dengan benar?
MD XF
4
Alasan saya memasukkan info tentang halaman manual adalah flag-flag ini dapat bergantung pada distribusi. Namun, untuk sebagian besar, tampaknya -r, --recursivedan -Rsetara. Itu juga akan memberikan perangkap umum, dll. Yang bagus.
Alex W
6
Jika Anda ingin menyalin DIRECTORY dengan mudah dan bukan hanya isinya, tinggalkan tanda hubung di folder sumber. cp -r dir1 ~/Pictures/
mehtunguh
105

Menggunakan:

$ cp -R SRCFOLDER DESTFOLDER/
cIph3r
sumber
4
inilah cara saya melakukannya dan demo1_copybelum ada$ ls demo1 demo3 README.md $ cp -R demo1/ demo1_copy/
HattrickNZ