Unix - menyalin konten dari satu direktori ke direktori lain [ditutup]


90
Folder1/
    -fileA.txt
    -fileB.txt
    -fileC.txt

> mkdir Folder2/

> [copy command]

Dan sekarang Folder2/terlihat seperti:

Folder2/
    -fileA.txt
    -fileB.txt
    -fileC.txt   

Bagaimana membuat ini terjadi? Saya telah mencoba cp -r Folder1/ Folder2/tetapi saya berakhir dengan:

Folder2/
    Folder1/
        -fileA.txt
        -fileB.txt
        -fileC.txt

Yang dekat tetapi tidak persis seperti yang saya inginkan.

Terima kasih!

Jawaban:


124

Coba ini:

cp Folder1/* Folder2/

3
tapi ini tidak akan menyalin file tersembunyi, bukan?
— Fabrizio Regini

9
Benar. cp -Rakan, tapi itu akan disalin secara rekursif, jadi Anda mungkin ingin atau tidak ingin menggunakannya. Anda hanya dapat cp Folder1/.* Folder2/menyalin file yang tersembunyi.
— Geoff

1
Perhatikan bahwa ini akan gagal jika Anda menggunakan "sudo" atau yang setara dan direktori tersebut berisi banyak file. Saya mendapatkansudo: unable to execute /bin/cp: Argument list too long
— Nathan Osman

perhatikan bahwa SCP memiliki sintaks yang sedikit berbeda, lihat di sini: stackoverflow.com/a/26346339/1984636
— sivi

Jangan lakukan ini. Lakukan "cp -rT src dest" di Linux, atau "cp -R src / dest" di BSD.
— xpusostomos

47

Cukup sederhana, dengan *wildcard.

cp -r Folder1/* Folder2/

Tetapi menurut contoh Anda rekursi tidak diperlukan, jadi berikut ini sudah cukup:

cp Folder1/* Folder2/

EDIT:

Atau lewati mkdir Folder2bagian dan jalankan saja:

cp -r Folder1 Folder2

Kalau ls | sort -k1.5 | head -8 > folder1begitu bagaimana cara melakukannya?
— Pooja

Anda baru saja kehilangan semua file tersembunyi Anda. Jangan lakukan ini. Lakukan "cp -rT src dest" di Linux, atau "cp -R src / dest" di BSD.
— xpusostomos

23

Untuk membuat salinan yang tepat, izin, kepemilikan, dan semua gunakan "-a" dengan "cp". "-r" akan menyalin konten file tetapi tidak selalu menyimpan hal lain yang sama.

cp -av Sumber / * Tujuan /

(pastikan Dest / ada dulu)

Jika Anda ingin berulang kali memperbarui dari satu file ke file lainnya atau memastikan Anda juga menyalin semua dotfiles, rsyncsangat membantu:

rsync -av --hapus Sumber / Tujuan /

Ini juga "dapat dipulihkan" karena Anda dapat memulai ulang jika Anda membatalkannya saat menyalin. Saya suka "-v" karena ini memungkinkan Anda melihat apa yang sedang terjadi tetapi Anda dapat menghilangkannya.


1
apa -vuntuk?
— HattrickNZ

bertele-tele, hanya untuk melihat apa yang sedang terjadi.
— Brian White

1
Jika Anda memiliki banyak file, -vopsi ini membutuhkan waktu. Jika Anda tidak membutuhkan output, gunakan -asaja.
— Eyal Levin

1
Anda harus menjalankan koneksi jaringan yang cukup lambat agar penyalinan diperlambat oleh keluaran teks. Dan bahkan kemudian, itu hanya akan menjadi kembalinya command prompt, bukan salinannya sendiri.
— Brian White

Anda kehilangan file tersembunyi Anda. Lakukan "cp -rT src dest" di Linux, atau "cp -R src / dest" di BSD.
— xpusostomos
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.