Ini sedikit pertanyaan yang memalukan, tetapi saya harus mengakui bahwa di akhir karir saya ini saya masih memiliki pertanyaan tentang perintah mv.
Saya sering mengalami masalah ini: Saya perlu memindahkan semua file secara rekursif naik satu tingkat. Katakanlah saya memiliki folder foo, dan bilah folder di dalamnya. Bar memiliki kekacauan file dan folder, termasuk file dot dan folder. Bagaimana cara memindahkan semua yang ada di bar ke level foo?
Jika foo kosong, saya cukup memindahkan bilah satu tingkat di atas, menghapus foo dan mengganti nama bilah ke foo. Bagian dari masalah adalah bahwa saya tidak tahu apa wildcard mv untuk "semuanya termasuk titik". Bagian dari pertanyaan ini adalah ini - apakah ada diskusi mendalam tentang wildcard yang digunakan perintah cp dan mv di suatu tempat (googling ini hanya membawa tutorial yang sangat mendasar).
sumber
To eliminate the error caused by also matching "." and "..", use this command: mv bar/{,.[!.],..?}* .
Cara termudah untuk melakukan ini adalah melakukannya dalam dua perintah, karena * tidak cocok. Apa pun
Anda tidak ingin menggunakan bilah /.* yang saya temukan saat melakukan kesalahan ini:
Ini adalah hal yang buruk. Adakah yang mau menebak kenapa? ;-)
sumber
.*
ke.
dan..
. Zsh setidaknya tidak untukku.Hal pertama yang harus diketahui tentang globbing - ini dilakukan oleh shell, bukan perintah. Periksa halaman manual shell Anda untuk semua detailnya.
sumber
Yang ini memanen semua file dari subfolder dan memindahkannya ke direktori saat ini
Jika Anda ingin menulis file dengan nama yang sama, gunakan
sumber
mv .??* *
akan mengurus apa pun kecuali titik diikuti oleh satu karakter. Jika itu biasa untuk situasi Anda, Anda dapat menambahkan.[a-zA-Z0-9]*
. Yang masih akan meninggalkan file dengan nama-nama seperti.;
,.^
, dan.^I
(tab). Jika Anda perlu menangani semuanya, Anda harus sedikit lebih rumit.sumber
Jika Anda memiliki struktur direktori
/foo/bar/
dan Anda ingin memindahkan semua file dalambar
satu langkah di atas, bukabar
direktori dan ketik berikut ini:Secara umum, saya pikir
cpio(1)
lebih baik untuk tugas semacam ini. Anda dapat melihat dokumentasi terperinci dengan menerbitkaninfo cpio
di shell Anda.sumber