Bagaimana cara memindahkan semua file dari satu folder ke folder lain menggunakan baris perintah?

245

Saya ingin tahu bagaimana saya bisa memindahkan semua file dari folder ke folder lain dengan baris perintah.

Katakanlah saya ada di folder Unduhan saya dan ada 100 file yang ingin saya pindahkan ke folder Video saya, tanpa harus menulis semua nama file.

Michael
sumber
Anda bertanya tentang pindah filestetapi orang-orang menunjukkan kepada Anda bagaimana bergerak tidak hanya filestetapi foldersjuga. Apakah itu oke?
Askar
2
@ Hontvári Levente memberi jawaban setahun yang lalu yang tampaknya merupakan yang terbaik, bersih, sederhana, dan berhasil. Jadi, bagaimana hanya mendapat 3 suara (dibandingkan dengan 262 untuk jawaban yang saat ini di atas)?
Ray Butterworth

Jawaban:

331

Buka terminal dan jalankan perintah ini:

mv  -v ~/Downloads/* ~/Videos/

Ini akan memindahkan semua file dan folder dari folder Downloads ke folder Videos.


Untuk memindahkan semua file, tetapi bukan folder:

Jika Anda tertarik untuk memindahkan semua file (tetapi bukan folder) dari folder Downloads ke folder Videos, gunakan perintah ini

find ~/Downloads/ -type f -print0 | xargs -0 mv -t ~/Videos

Untuk hanya memindahkan file dari folder Unduh, tetapi tidak dari sub-folder:

Jika Anda ingin memindahkan semua file dari folder Unduhan, tetapi tidak ada file di dalam folder di folder Unduhan, gunakan perintah ini:

find ~/Downloads/ -maxdepth 1 -type f -print0 | xargs -0 mv -t ~/Videos

di sini, -maxdepthopsi menentukan seberapa dalam pencarian harus mencoba, 1berarti, hanya direktori yang ditentukan dalam perintah find. Anda dapat mencoba menggunakan 2, 3juga untuk menguji.

Lihat manual menemukan Ubuntu untuk penjelasan terperinci

Anwar
sumber
3
Anda dapat menggunakan mv sendiri untuk memindahkan seluruh direktori ke folder lain: folder mv ~ / Documents
JohnMerlino
20
FYI Saya percaya perintah pertama Anda ("mv -v ~ / Downloads / * ~ / Video /") tidak akan memindahkan file dot.
Mark Doliner
1
Ya, itu tidak akan memindahkan file.
Anwar
3
Nb. Anda -print0 | xargs -0 mv -t ~/Videosdapat lebih efisien melakukannya dengan -exec mv -t ~/Videos \{\} \+:-)
artfulrobot
3
mv -v ~/Downloads/* ~/Videos/tidak berfungsi untuk file tersembunyi
FreeLightman
28
mv ~/Downloads/* ~/Videos

Ini akan memindahkan semua file termasuk subfolder di direktori yang Anda inginkan mv. Jika Anda ingin cp(menyalin) atau rm(menghapus), Anda akan memerlukan opsi -r(rekursif) untuk memasukkan subfolder.

pengguna223289
sumber
2
Perintah mv saya tidak memiliki opsi -R (Ubuntu 14.04).
Mark Doliner
1
@MarkDoliner, ya, mvtidak perlu opsi rekursif untuk memasukkan subfolder. Orang dapat menggunakannya juga untuk mengganti nama.
Alen
Saya tidak perlu *. Hal yang sama terjadi tanpa menggunakan bintang.
MycrofD
The ~ / dalam awalan nama folder tidak selalu bekerja (tidak bekerja pada bash dan git minimal)
Krish Munot
Solusi ini akan memberikan kesalahan jika direktori sumber kosong.
Pierre Thibault
11

Untuk kasus sederhana:

mv ~/Downloads/* ~/Videos

Jika Anda ingin memindahkan file dot (tersembunyi) juga, maka setel opsi dotglob shell.

shopt -s dotglob
mv ~/Downloads/* ~/Videos

Ini membiarkan opsi shell disetel.

Untuk sekali pakai dotglob, jalankan perintah dalam subkulit:

(shopt -s dotglob; mv ~/Downloads/* ~/Videos)
Hontvári Levente
sumber
Catatan untuk saya sendiri: Opsi terakhir (shopt -s dotglob; mv ~/Downloads/* ~/Videos) hanya memindahkan (memotong) konten (termasuk file yang disembunyikan). Dalam hal ini, folder asal dan tujuan harus sudah ada. Pada akhirnya, direktori asal menjadi kosong.
Pathros
Ini seharusnya jawaban yang diterima
megar
11

Mungkin dengan menggunakan rsync, misalnya:

rsync -vau --remove-source-files src/ dst/

dimana:

-v, --verbose: Meningkatkan verbositas.

-a, --archive: Mode arsip; sama -rlptgoD(tidak ada -H, -A, -X).

-u, --update: Lewati file yang lebih baru pada receiver.

--remove-source-files Ini memberitahu rsyncuntuk menghapus dari sisi pengirim file (artinya bukan direktori) yang merupakan bagian dari transfer dan telah berhasil diduplikasi pada sisi penerima.

Jika Anda memiliki hak akses root, awali dengan sudountuk menimpa potensi masalah izin.

kenorb
sumber
1
PERINGATAN! opsi --delete-after seperti yang dicatat tidak berfungsi seperti yang Anda harapkan. Itu tidak menghapus file sumber setelah salinan berhasil ... ITU MENGHAPUS SEMUA SISA / FILE LAIN DALAM DESTINASI. (seperti yang dicatat @kenorb ... tapi saya tidak cukup membaca! DOH)
Jay Marm
4

Menggunakan

mv -v ~/rootfolder/branch/* ~/rootfolder

Saya harap ini membantu. Karena saya merasakan sakit yang sama dan membuang banyak waktu untuk memperbaiki kesalahan saya.

Udit Chugh
sumber
2

Untuk memindahkan direktori dengan atau tanpa konten ke nama barunya seperti bagaimana Anda akan menggunakan mvperintah untuk mengganti nama file:

mv -T dir1 dir2

dimana:

  • -T memperlakukan tujuan sebagai file normal
  • dir1 adalah nama asli direktori
  • dir2 adalah nama baru dari direktori

NB: dir2tidak harus ada.

Saya harap ini menghemat banyak waktu, sebagai noob, sebelum ini, saya akan membuat direktori dengan nama baru dan kemudian memindahkan isi direktori ke direktori yang dibuat sebelumnya.

Gunakan untuk subdirektori

Perintah ini berguna ketika banyak file telah disimpan dalam subfolder dari direktori target yaitu Downloads/mp4. Dalam contoh ini, menjalankan mv -T Downloads/mp4 Videosakan mengakibatkan mp4subfolder dihapus dan semua file yang ada di dalamnya dipindahkan ke folder Video.

Feyisayo Sonubi
sumber
1
+1 karena diuji bekerja di Xubuntu 14.04. Saya telah menambahkan contoh dalam jawaban ini untuk menunjukkan bahwa perintah ini akan menyebabkan dir1dihapus. Selain dari tindakan pencegahan ini, jawaban ini mencatat sesuatu yang baik untuk penggunaan sehari-hari.
clearkimura
1
"Untuk memindahkan direktori dengan atau tanpa konten ke nama barunya" Bagaimana Anda bisa memindahkan direktori ... ke sebuah nama? Itu tidak masuk akal. "-T memperlakukan tujuan sebagai file normal" Bagaimana tujuan menjadi file? Apakah maksud Anda direktori?
Monica Heddneck
Seperti mengganti nama file ke nama baru seperti yang akan Anda lakukan dengan sesuatu seperti mv fileA fileBtetapi -Tbendera dalam hal ini memperlakukan tujuan / direktori sebagai file dan mengganti nama itu.
Feyisayo Sonubi
Bekerja untuk saya :)
Naveen Kumar V
1
  1. Pergi ke baris perintah dan masuk ke direktori yang ingin Anda pindahkan cd folderNamehere
  2. Jenis pwd. Ini akan mencetak direktori yang ingin Anda pindahkan juga.
  3. Kemudian ubah ke direktori tempat semua file berada cd folderNamehere
  4. Sekarang untuk memindahkan semua jenis file mv *.* typeAnswerFromStep2here

Itu akan memindahkan semua file dari direktori itu ke yang lain.

jrh
sumber
3
Ini tidak akan cocok dengan file tanpa ekstensi apa pun. misalnya jika folder memiliki file: foo.txt, bar.dan barbaik bar.dan bartidak akan dipindahkan. Menggunakan *alih- *.*alih mengurus itu. Namun dalam kedua kasus, file tersembunyi seperti: .foobartidak akan dipindahkan.
Dan
1
mv source_path/* destination_path/

di sini Anda harus mengedepankan slash dan *setelah jalur sumber sehingga akan mengambil file di dalam source_path bukan direktori sumber lengkap.

Contoh: mv /home/username/test/* /home/username/test2/

Perintah di atas memindahkan semua file (kecuali disembunyikan) di direktori sumber ke direktori tujuan.

vivek Kumar
sumber
0

Cobalah

find ~/Desktop -type f -iname  "*.mp4" -exec mv {} ~/Videos \;

-jenis dengan argumen -jenis Anda dapat menentukan jenis file.pada pernyataan ini adalah file rata-rata. jika menggunakan -d yang berarti direktori.

-iname: metode yang paling umum dan jelas untuk mencari file menggunakan argumen -nama.jika Anda tidak yakin tentang sensitivitas hurufnya, Anda dapat menggunakan argumen -iname

mv {} dan akhirnya untuk menentukan direktori target dan kemudian memindahkan file di sana menggunakan argumen mv {}

pedram shabani
sumber