Dalam bash saya perlu melakukan ini:
ambil semua file dalam direktori
salin ke direktori yang ada
Bagaimana saya melakukan ini? Saya mencoba cp -r t1 t2
(baik t1 dan t2 adalah direktori yang ada, t1 memiliki file di dalamnya) tetapi ia membuat direktori yang disebut t1 di dalam t2, saya tidak ingin itu, saya perlu file di t1 untuk masuk langsung ke dalam t2. Bagaimana saya melakukan ini?
cp
pertanyaan dapat dilihat sebagaibash
pertanyaan, yang merupakan bahasa pemrograman. Saya belum pernah melihat pertanyaan Python berbicara tentang menyalin file ditutup.Jawaban:
Yang Anda inginkan adalah:
Titik di bagian akhir memberitahukannya untuk menyalin isi direktori saat ini, bukan direktori itu sendiri. Metode ini juga termasuk file dan folder tersembunyi.
sumber
mv
. Adakah yang tahu mengapa?Jika Anda ingin menyalin sesuatu dari satu direktori ke direktori saat ini , lakukan ini:
Ini mengasumsikan Anda tidak mencoba menyalin file tersembunyi.
sumber
Atau jika Anda memiliki direktori di dalam dir1 yang ingin Anda salin juga
sumber
dir1/.*
bukanlah ide yang baik, karena menyalin dir1 / .. (yaitu induk dari direktori yang Anda coba salin). Itu juga salinan dir1 /. yang baik-baik saja, kecuali bahwa itu sudah (sebagian besar) disalin, jadi Anda melakukan pekerjaan itu dua kali.dir1/.*
/ file tersembunyi dengan memasukkan direktori yang ingin Anda salin, dan kemudian merujuknya sebagai.
. Jadi, jika Anda ingin menyalin semua file termasuk file tersembunyi dari direktori ke direktori yang ada, Anda dapat:cd [source dir]
,cp . [path to destination dir, with no trailing slash]
.Mengasumsikan t1 adalah folder dengan file di dalamnya, dan t2 adalah direktori kosong. Yang Anda inginkan adalah sesuatu seperti ini:
Ingat, untuk contoh pertama, t1 dan t2 harus berupa path lengkap, atau path relatif (berdasarkan di mana Anda berada). Jika mau, Anda dapat menavigasi ke folder kosong (t2) dan melakukan ini:
Atau Anda dapat menavigasi ke folder dengan file (t1) dan melakukan ini:
Catatan: Tanda * (atau wildcard) adalah singkatan dari semua file dan folder. Bendera -R berarti secara rekursif (semua yang ada di dalam segalanya).
sumber
Garis miring pada direktori sumber sedikit mengubah semantik, sehingga menyalin isi tetapi bukan direktori itu sendiri. Ini juga menghindari masalah dengan globbing dan file tak terlihat yang dimiliki Bertrand (menyalin
t1/*
kehilangan file yang tak terlihat, menyalin `t1 / * t1 /.* 'salinan t1 /. Dan t1 / .., yang tidak Anda inginkan).sumber
$ mkdir t1
$ mkdir t2
$ touch t1/one
$ touch t1/two
$ touch t1/.three
$ cp -R t1/ t2
$ ls t2/
t1
(maaf tidak ada format kode dalam komentar, versi yang dapat dibaca di pastebin.com/yszSxV6G )Tergantung pada beberapa detail, Anda mungkin perlu melakukan sesuatu seperti ini:
... ini pada dasarnya berubah ke direktori SRC dan menyalinnya ke target, lalu kembali ke tempat Anda memulainya.
Perhatian ekstra adalah untuk menangani target relatif atau absolut.
(Ini tidak bergantung pada semantik halus dari
cp
perintah itu sendiri ... tentang bagaimana ia menangani spesifikasi sumber dengan atau tanpa trailing / ... karena saya tidak yakin itu stabil, portabel, dan dapat diandalkan selain hanya GNUcp
dan saya tidak tahu apakah mereka akan terus seperti itu di masa depan).sumber
Untuk di dalam beberapa direktori, ini akan digunakan penuh karena menyalin semua konten dari "folder1" ke direktori baru "folder2" di dalam beberapa direktori.
$ (pwd) akan mendapatkan path untuk direktori saat ini.
Perhatikan titik (.) Setelah folder1 untuk mendapatkan semua konten di dalam folder1
sumber