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!

JDS
sumber

Jawaban:

124

Coba ini:

cp Folder1/* Folder2/
Geoff
sumber
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
Koen.
sumber
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.

Brian White
sumber
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