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.