Ini adalah perintah mmv yang dapat dijalankan di penyedia hosting gratis OnWorks menggunakan salah satu dari beberapa workstation online gratis kami seperti Ubuntu Online, Fedora Online, emulator online Windows atau emulator online MAC OS
PROGRAM:
NAMA
mmv - pindahkan/salin/tambahkan/tautkan banyak file dengan pola wildcard
RINGKASAN
mmv [-m|x|r|c|o|a|l|s] [-h] [-d|p] [-g|t] [-v|n] [--] [dari untuk]
CONTOH
Ganti nama semua *.jpeg file di direktori saat ini ke * .jpg:
mmv '*.jpeg' '#1.jpg'
Ganti kemunculan pertama dari abc dengan xyz di semua file di direktori saat ini:
mmv '*abc*' '#1xyz#2'
Ganti nama file yang berakhiran .html.en, .html.de, dst. hingga berakhiran .en.html, .de.html, dll. dalam
direktori saat ini:
mmv '*.html.??' '#1.#2#3.html'
Ganti nama file musik dari <lacak tidak.> - - <lagu judul>.ogg untuk -
<lacak tidak.> - <lagu judul>.ogg di direktori saat ini:
mmv '* - * - *.ogg' '#2 - #1 - #3.ogg'
DESKRIPSI
Mmv memindahkan (atau menyalin, menambahkan, atau menautkan, sebagaimana ditentukan) setiap file sumber yang cocok dengan dari
pola ke nama target yang ditentukan oleh untuk pola. Tindakan ganda ini dilakukan
aman, yaitu tanpa penghapusan file yang tidak terduga karena tabrakan nama target
dengan nama file yang ada atau dengan nama target lainnya. Selanjutnya, sebelum melakukan sesuatu,
mmv mencoba mendeteksi kesalahan apa pun yang akan dihasilkan dari seluruh rangkaian tindakan
ditentukan dan memberi pengguna pilihan untuk melanjutkan dengan menghindari pelanggaran
bagian atau menggugurkan. mmv memang mendukung file besar (LFS) tetapi *TIDAK* mendukung jarang
file (yaitu meledak mereka).
Opsi Tugas
Apakah mmv memindahkan, menyalin, menambahkan, atau tautan diatur oleh rangkaian opsi pertama yang diberikan
di atas. Jika tidak ada yang ditentukan, tugas diberikan dengan nama perintah di mana
mmv dipanggil (argv[0]):
tugas default nama perintah
mmv-x
mcp-c
gila -a
juta -l
Pilihan opsi tugas adalah:
-m : pindahkan file sumber ke nama target. Keduanya harus berada di perangkat yang sama. Tidak akan bergerak
direktori. Jika file sumber adalah tautan simbolis, pindahkan tautan tanpa
memeriksa apakah target tautan dari direktori baru berbeda dari yang lama.
-x : sama dengan -m, kecuali perpindahan lintas perangkat dilakukan dengan menyalin, lalu menghapus sumber.
Saat menyalin, atur bit izin dan waktu modifikasi file target
file ke file sumber.
-r : ganti nama file atau direktori sumber menjadi nama target. Nama target tidak boleh menyertakan a
path: file tetap berada di direktori yang sama dalam semua kasus. Opsi ini adalah satu-satunya
cara mengganti nama direktori di bawah mmv.
-c : salin file sumber ke nama target. Mengatur waktu dan izin modifikasi file
bit file target ke file sumber, terlepas dari apakah
file target sudah ada. Rantai dan siklus (akan dijelaskan di bawah) bukan
diperbolehkan.
-o : menimpa nama target dengan file sumber. Jika file target ada, itu ditimpa,
menjaga pemilik aslinya dan bit izin. Jika tidak ada, itu adalah
dibuat, dengan bit izin baca-tulis diatur sesuai dengan umask(1), dan eksekusi
bit izin disalin dari file sumber. Dalam kedua kasus, modifikasi file
waktu diatur ke waktu saat ini.
-a : menambahkan konten file sumber ke nama target. Target waktu modifikasi file adalah
diatur ke waktu saat ini. Jika file target tidak ada, itu dibuat dengan
bit izin ditetapkan sebagai di bawah -o. Tidak seperti semua opsi lain, -a memungkinkan banyak
file sumber memiliki nama target yang sama, misalnya "mmv -a \*.c big" akan menambahkan semua
".c" file ke "besar". Rantai dan siklus juga diperbolehkan, jadi "mmv -aff" akan
gandakan "f".
-l : menautkan nama target ke file sumber. Keduanya harus berada di perangkat yang sama, dan sumbernya
tidak boleh berupa direktori. Rantai dan siklus tidak diperbolehkan.
-s : sama seperti -l, tetapi gunakan tautan simbolik alih-alih tautan keras. Untuk tautan yang dihasilkan
untuk mengarahkan kembali ke sumbernya, nama sumber harus dimulai dengan '/', atau
target harus berada di direktori saat ini atau direktori sumber. Jika tidak satu pun dari ini
kondisi terpenuhi, tautan ditolak. Namun, sumber dan target dapat berada di
perangkat yang berbeda, dan sumbernya dapat berupa direktori.
Hanya satu dari opsi ini yang dapat diberikan, dan ini berlaku untuk semua file yang cocok. Tersisa
pilihan tidak perlu diberikan secara terpisah, yaitu "mmv -mk" diperbolehkan.
Beberapa Pasangan Pola / Pola Membaca dari STDIN
kelipatan dari -- untuk pasangan pola dapat ditentukan dengan menghilangkan pasangan pola pada
baris perintah, dan memasukkannya pada input standar, satu pasang per baris. (Jika pola
pasangan diberikan pada baris perintah, input standar tidak dibaca.) Jadi,
mmv
ab
CD
akan mengganti nama "a" menjadi "b" dan "c" menjadi "d". Jika sebuah file dapat dicocokkan dengan beberapa yang diberikan
dari pola, itu untuk pola pasangan yang cocok pertama digunakan. Dengan demikian,
mmv
ab
ac
akan memberikan pesan kesalahan "a -> c : tidak cocok" karena file "a" (meskipun ada) adalah
sudah dicocokkan oleh pasangan pola pertama.
PERINGATAN: Mode operasi ini tidak tidak bekerja jika pola itu sendiri mengandung spasi. Lihat
http://bugs.debian.org/149873 untuk rincian.
Mulai dari pola
dari pattern adalah nama file dengan wildcard tertanam: '*', '?', '['...']', dan ';'. NS
tiga yang pertama memiliki kebiasaan mereka sh(1) arti dari, masing-masing, cocok dengan string apa pun dari
karakter, mencocokkan karakter tunggal apa pun, dan mencocokkan salah satu dari serangkaian karakter.
Di antara '[' dan ']', rentang dari karakter 'a' hingga karakter 'z' ditentukan
dengan "az". Kumpulan karakter yang cocok dapat ditiadakan dengan menyisipkan '^' setelah
'['. Jadi, "[^b-e2-5_]" akan cocok dengan karakter apa pun kecuali 'b' hingga 'e', '2' hingga '5',
dan '_'.
Perhatikan bahwa jalur diperbolehkan dalam pola, dan wildcard dapat bercampur dengan
menebas secara sewenang-wenang. NS ';' wildcard berguna untuk mencocokkan file pada kedalaman apa pun di
pohon direktori. Ini cocok dengan "*/" yang diulang beberapa kali, termasuk nol,
dan hanya dapat muncul di awal pola atau setelah tanda '/'. Jadi ";*.c"
akan cocok dengan semua file ".c" di atau di bawah direktori saat ini, sementara "/;*.c" akan cocok dengan mereka
mana saja di sistem file.
Selain itu, jika dari pola (atau untuk pola) dimulai dengan "~/", '~' diganti
dengan nama direktori home. (Perhatikan bahwa fitur "~pengguna" dari csh(1) bukan
diimplementasikan.) Namun, '~' tidak diperlakukan sebagai wildcard, dalam arti tidak
diberi indeks wildcard (lihat di bawah).
Karena mencocokkan direktori di bawah opsi tugas selain -r atau -s akan menghasilkan
kesalahan, tugas selain -r dan -s hanya cocok dengan direktori terhadap yang sepenuhnya eksplisit dari
pola (yaitu tidak mengandung wildcard). Di bawah -r dan -s, ini hanya berlaku untuk "." dan
"..".
Berkas yang diawali dengan '.' hanya cocok dengan dari pola yang dimulai dengan
eksplisit '.'. Namun, jika -h ditentukan, mereka dicocokkan secara normal.
Peringatan: karena shell biasanya memperluas wildcard sebelum melewati baris perintah
argumen untuk mmv, biasanya perlu menyertakan baris perintah dari dan untuk pola
dalam kutipan.
Untuk pola
untuk pola adalah nama file dengan tertanam wildcard indeks, di mana indeks terdiri dari
karakter '#' diikuti dengan serangkaian angka. Ketika file sumber cocok dengan dari
pola, nama target untuk file dibangun dari untuk pola dengan mengganti
indeks wildcard dengan karakter aktual yang cocok dengan wildcard yang direferensikan di
nama asal. Dengan demikian, jika dari polanya adalah "abc*.*" dan untuk polanya adalah "xyz#2.#1", maka
"abc.txt" ditargetkan ke "xyztxt.". ('*' pertama cocok dengan "", dan yang kedua cocok
"txt".) Demikian pula, untuk pasangan pola ";*.[clp]" -> "#1#3/#2", "foo1/foo2/prog.c" adalah
ditargetkan ke "foo1/foo2/c/prog". Perhatikan bahwa tidak ada '/' setelah "#1" di untuk
pola, karena string cocok dengan ';' selalu kosong atau diakhiri dengan '/'. Di dalam
kasus ini, cocok dengan "foo1/foo2/".
Untuk mengonversi string yang cocok dengan wildcard menjadi huruf kecil atau huruf besar sebelumnya
menyematkannya di nama target, masukkan 'l' atau 'u', masing-masing, di antara '#' dan
deretan angka.
untuk pola, seperti dari pola, dapat dimulai dengan "~/" (lihat di atas). Ini tidak
mengharuskan melampirkan untuk pola dalam tanda kutip pada baris perintah sejak csh(1) mengembang
'~' dengan cara yang sama persis seperti mmv (atau, dalam kasus sh(1), tidak memperluasnya di
semua).
Untuk semua opsi tugas selain -r, jika nama target adalah direktori, target sebenarnya
nama dibentuk dengan menambahkan '/' diikuti oleh komponen terakhir dari nama file sumber.
Misalnya, "mmv dir1/a dir2", jika "dir2" memang sebuah direktori, akan benar-benar pindah
"dir1/a" menjadi "dir2/a". Namun, jika "dir2/a" sudah ada dan merupakan direktori, ini
dianggap sebagai kesalahan.
Untuk menghapus karakter apa pun (misalnya '*', '?', atau '#') dari arti khusus ke mmv, seperti ketika
nama pengganti yang sebenarnya harus mengandung karakter '#', mendahului karakter khusus dengan
a \' (dan sertakan argumen dalam tanda kutip karena shell). Ini juga berfungsi untuk
mengakhiri indeks wildcard ketika harus diikuti oleh digit dalam nama file, misalnya
"a#1\1".
Rantai dan Siklus
Rantai adalah urutan tindakan tertentu di mana nama target dari satu tindakan mengacu pada
file sumber dari tindakan lain. Sebagai contoh,
mmv
ab
bc
menentukan rantai "a" -> "b" -> "c". Siklus adalah rantai di mana nama target terakhir
merujuk kembali ke file sumber pertama, misalnya "mmv aa". Mmv mendeteksi rantai dan siklus
terlepas dari urutan di mana tindakan konstituen mereka benar-benar diberikan. Di mana
diperbolehkan, yaitu dalam memindahkan, mengganti nama, dan menambahkan file, rantai dan siklus ditangani
anggun, dengan melakukan mereka dalam urutan yang tepat. Siklus diputus dengan mengganti nama terlebih dahulu
salah satu file dengan nama sementara (atau hanya mengingat ukuran aslinya saat melakukan
menambahkan).
Tabrakan dan Penghapusan
Ketika dua atau lebih file yang cocok harus dipindahkan, disalin, atau ditautkan ke file yang sama
nama file sasaran, mmv mendeteksi kondisi sebagai kesalahan sebelum melakukan tindakan apa pun.
Selain itu, mmv memeriksa apakah salah satu tindakannya akan mengakibatkan kehancuran yang ada
file. Jika opsi -d (hapus) ditentukan, semua penghapusan atau penimpaan file selesai
diam-diam. Di bawah -p (protect), semua penghapusan atau penimpaan (kecuali yang ditentukan dengan
"(*)" pada input standar, lihat di bawah) diperlakukan sebagai kesalahan. Dan jika tidak ada pilihan
ditentukan, pengguna ditanyai tentang setiap penghapusan atau penimpaan secara terpisah. (Aliran baru
to "/ dev/tty" digunakan untuk semua kueri interaktif, bukan input standar.)
Penanganan kesalahan
Setiap kali kesalahan dalam spesifikasi tindakan pengguna terdeteksi, pesan kesalahan adalah
diberikan pada keluaran standar, dan mmv melanjutkan untuk memeriksa sisa tindakan yang ditentukan.
Setelah semua kesalahan terdeteksi, mmv menanyakan pengguna apakah dia ingin melanjutkan dengan
menghindari tindakan yang salah atau membatalkan sama sekali. Ini dan semua pertanyaan lainnya mungkin
dihindari dengan menentukan opsi -g (go) atau -t (terminate). Mantan akan
menyelesaikan semua kesulitan dengan menghindari tindakan yang salah; yang terakhir akan dibatalkan mmv if
setiap kesalahan terdeteksi. Menentukan salah satu dari mereka default mmv ke -p, kecuali -d adalah
ditentukan (lihat di atas). Jadi, -g dan -t paling berguna saat dijalankan mmv di latar belakang
atau dalam skrip shell, ketika kueri interaktif tidak diinginkan.
Laporan
Setelah tindakan yang akan dilakukan ditentukan, mmv melakukannya secara diam-diam, kecuali jika
opsi -v (verbose) atau -n (no-execute) ditentukan. Penyebab sebelumnya mmv melaporkan
setiap tindakan yang dilakukan pada output standar sebagai
a -> b : selesai.
Di sini, "a" dan "b" masing-masing akan diganti dengan nama sumber dan target. jika
tindakan menghapus target lama, "(*)" dimasukkan setelah nama target. Juga
Simbol "->" diubah ketika siklus harus diputus: '>' diubah menjadi '^' pada
tindakan sebelum target lama diubah namanya menjadi sementara, dan '-' diubah menjadi
a '=' pada tindakan di mana sementara digunakan.
Di bawah -n, tidak ada tindakan yang dilakukan, tetapi pesan seperti di atas dicetak pada
output standar dengan ": selesai." dihilangkan.
Output yang dihasilkan oleh -n dapat (setelah diedit, jika diinginkan) diumpankan kembali ke mmv pada
masukan standar (dengan menghilangkan dari -- untuk pasangan di mmv garis komando). Untuk memfasilitasi
ini, mmv mengabaikan baris pada input standar yang terlihat seperti kesalahannya sendiri dan "selesai"
pesan, serta semua baris yang dimulai dengan spasi, dan akan menerima pasangan pola
dengan atau tanpa intervensi "->" (atau "-^", "=>", atau "=^"). Baris dengan "(*)" setelah
pola target memiliki efek mengaktifkan -d untuk file yang cocok dengan pola ini saja, jadi
bahwa penghapusan semacam itu dilakukan secara diam-diam.
PERINGATAN: Ini berarti bahwa tak terduga hal mungkin terjadi jika arsip dicocokkan dengan pola
mengandung spasi. Lihat http://bugs.debian.org/149873 untuk rincian.
Saat menyusui mmv outputnya sendiri, kita harus ingat untuk menentukan lagi opsi tugas (jika
any) awalnya digunakan untuk membuatnya.
Meskipun mmv mencoba untuk memprediksi semua kecelakaan sebelum melakukan tindakan tertentu,
kecelakaan mungkin saja terjadi. Sebagai contoh, mmv tidak memeriksa ruang kosong yang memadai ketika
penyalinan. Jadi, terlepas dari semua upaya, masih mungkin suatu tindakan gagal setelah beberapa
lainnya sudah dilakukan. Untuk membuat pemulihan semudah mungkin, mmv laporan yang
tindakan yang telah dilakukan dan yang masih harus dilakukan setelah kegagalan tersebut
terjadi. Kemudian dibatalkan, tidak mencoba melakukan hal lain. Setelah pengguna selesai
masalahnya, dia bisa memberi makan laporan ini kembali ke mmv pada input standar untuk menyelesaikannya
tugas. (Pengguna dimintai nama file untuk membuang laporan ini jika keluaran standar
belum dialihkan.)
EXIT STATUS
Mmv keluar dengan status 1 jika dibatalkan sebelum melakukan sesuatu, dengan status 2 jika dibatalkan karena
kegagalan setelah menyelesaikan beberapa tindakan, dan dengan status 0 sebaliknya.
Gunakan mmv online menggunakan layanan onworks.net