Cara Menggunakan Perintah Ganti Nama di Linux
Pahami file yang mengubah nama pembangkit tenaga listrik dunia Linux dan berikan mv
— dan diri Anda sendiri — istirahat. Rename
fleksibel, cepat, dan terkadang bahkan lebih mudah. Berikut tutorial untuk pembangkit tenaga perintah ini.
Ada Apa Dengan mv?
Tidak ada yang salah dengan mv
. Perintah berfungsi dengan baik, dan ditemukan di semua distribusi Linux, di macOS, dan di sistem operasi mirip Unix lainnya. Jadi itu selalu tersedia. Namun terkadang Anda hanya membutuhkan buldoser, bukan sekop.
The mv
perintah memiliki tujuan dalam hidup, dan itu adalah untuk memindahkan file. Ini adalah efek samping yang menyenangkan karena dapat digunakan untuk memindahkan file yang sudah ada ke file baru, dengan nama baru. Efek akhirnya adalah mengganti nama file, jadi kami mendapatkan apa yang kami inginkan. Tapi mv
bukan alat ganti nama file khusus.
Mengganti Nama File Tunggal Dengan mv
Digunakan mv
untuk mengganti nama jenis file mv
, spasi, nama file, spasi, dan nama baru yang Anda inginkan untuk file tersebut. Lalu tekan Enter.
Anda dapat menggunakan ls
untuk memeriksa file telah diganti namanya.
mv oldfile.txt newfile.txt
ls * .txt
Mengganti Nama Banyak File dengan mv
Segalanya menjadi lebih rumit ketika Anda ingin mengganti nama banyak file. mv
tidak memiliki kemampuan untuk menangani penggantian nama banyak file. Anda harus menggunakan beberapa trik Bash yang bagus. Tidak apa-apa jika Anda mengetahui beberapa fu baris perintah kelas menengah, tetapi kerumitan mengganti nama beberapa file dengan mv
berdiri sangat kontras dengan kemudahan menggunakan mv
untuk mengganti nama satu file.
Segalanya meningkat dengan cepat.
Katakanlah kita memiliki direktori dengan berbagai file di dalamnya, dengan tipe yang berbeda. Beberapa dari file ini memiliki ekstensi ".prog". Kami ingin mengganti namanya di baris perintah sehingga memiliki ekstensi ".prg".
Bagaimana kita berselisih mv
melakukannya untuk kita? Mari kita lihat file-nya.
ls * .prog -l
Berikut salah satu cara untuk melakukannya yang tidak menggunakan file skrip Bash yang sebenarnya.
untuk f in * .prog; lakukan mv - "$ f" "$ {f% .prog} .prg"
Apakah pekerjaan itu? Mari kita periksa file dan lihat.
ls * .pr *
Jadi, ya, itu berhasil. Sekarang semuanya adalah file ".prg", dan tidak ada file ".prog" di direktori.
Apa yang baru saja terjadi?
Apa yang sebenarnya dilakukan oleh perintah panjang itu? Mari kita hancurkan.
untuk f in * .prog; lakukan mv - "$ f" "$ {f% .prog} .prg"
Bagian pertama memulai perulangan yang akan memproses setiap file ".prog" di direktori, secara bergantian.
Bagian selanjutnya menjelaskan apa yang akan dilakukan pemrosesan . Ini digunakan mv
untuk memindahkan setiap file ke file baru. File baru akan diberi nama dengan nama file asli tidak termasuk bagian ".prog". Ekstensi baru dari ".prg" akan digunakan sebagai gantinya.
Harus Ada Cara yang Lebih Sederhana
Pasti. Itu adalah rename
perintahnya.
rename
bukan bagian dari distribusi Linux standar, jadi Anda harus menginstalnya. Ini juga memiliki nama yang berbeda di keluarga Linux yang berbeda, tetapi semuanya bekerja dengan cara yang sama. Anda hanya perlu mengganti nama perintah yang sesuai sesuai dengan rasa Linux yang Anda gunakan.
di Ubuntu dan distribusi turunan Debian yang Anda instal rename
seperti ini:
sudo apt-get install ganti nama
Di distribusi turunan Fedora dan RedHat, Anda menginstal prename
seperti ini. Perhatikan "p" awal, yang merupakan singkatan dari Perl.
sudo dnf install prename
Untuk menginstalnya di Manjaro Linux gunakan perintah berikut. Perhatikan bahwa perintah penggantian nama dipanggil perl-rename
.
sudo pacman -Syu perl-rename
Mari Lakukan Itu Lagi
Dan kali ini kami akan menggunakan rename
. Kami akan memutar kembali waktu sehingga kami memiliki satu set file ".prog".
ls * .prog
Sekarang mari gunakan perintah berikut untuk mengganti namanya. Kami kemudian akan memeriksa ls
apakah itu berhasil. Ingatlah untuk mengganti rename
dengan nama perintah yang sesuai untuk Linux Anda jika Anda tidak menggunakan Ubuntu atau Linux turunan Debian.
ganti nama 's / .prog / .prg /' * .prog
ls * .pr *
Berhasil, sekarang semuanya adalah file ".prg", dan tidak ada file ".prog" yang tersisa di direktori.
Apa yang Terjadi Saat Ini?
Mari kita jelaskan sedikit keajaiban itu, dalam tiga bagian.
Bagian pertama adalah nama perintah, rename
( prename
atau perl-rename
, untuk distribusi lain).
Bagian terakhir adalah *.prog
, yang memerintahkan rename
untuk mengoperasikan semua file ".prog".
Bagian tengah mendefinisikan pekerjaan yang ingin kita lakukan pada setiap nama file. The s
sarana pengganti. Istilah pertama ( .prog
) adalah apa yang rename
akan dicari di setiap nama file dan istilah kedua ( .prg
) adalah apa yang akan diganti.
Bagian tengah dari perintah, atau ekspresi pusat, adalah 'ekspresi reguler' Perl dan inilah yang memberi rename
perintah fleksibilitasnya.
Mengubah Bagian Lain dari Nama File
Kami telah mengubah ekstensi nama file sejauh ini, mari kita ubah bagian lain dari nama file.
Di direktori ada banyak file kode sumber C. Semua nama file diawali dengan "slang_". Kami dapat memeriksa ini dengan ls
.
ls sl * .c
Kami akan mengganti semua kemunculan "slang_" dengan "sl_". Format perintahnya sudah tidak asing lagi bagi kita. Kami hanya mengubah istilah pencarian, istilah penggantian, dan jenis file.
ganti nama 's / slang_ / sl_' * .c
Kali ini kami mencari file “.c”, dan mencari “slang_”. Setiap kali "slang_" ditemukan di nama file itu diganti dengan "sl_".
Kita bisa mengecek hasil dari perintah itu dengan mengulang ls
perintah dari atas dengan parameter yang sama:
ls sl * .c
Menghapus Bagian dari Nama File
Kami dapat menghapus sebagian dari nama file dengan mengganti istilah pencarian dengan apa pun.
ls * .c
ganti nama 's / sl _ //' * .c
ls * .c
Kita dapat melihat dari ls
perintah bahwa file ".c" kita semua diawali dengan "sl_". Mari kita singkirkan itu sama sekali.
The rename
perintah mengikuti format yang sama seperti sebelumnya. Kami akan mencari file ".c". Istilah penelusurannya adalah “sl_”, tetapi tidak ada istilah substitusi. Dua garis miring terbalik tanpa apapun di antara keduanya tidak ada artinya, string kosong.
rename
akan memproses setiap file ".c" secara bergantian. Ini akan mencari "sl_" di nama file. Jika ditemukan, maka tidak akan ada yang diganti. Dengan kata lain, istilah pencarian dihapus.
Penggunaan kedua dari ls
perintah tersebut memastikan bahwa awalan "sl_" telah dihapus dari setiap file ".c".
Batasi Perubahan pada Bagian Tertentu dari Nama File
Mari kita gunakan ls
untuk melihat file yang memiliki string "param" di nama filenya. Kemudian kita akan menggunakan rename
untuk mengganti string itu dengan "parameter" string. Kami akan menggunakan ls
sekali lagi untuk melihat efek rename
perintah pada file tersebut.
ls * param *
ganti nama 's / param / parameter' * .c
ls * param *
Empat file ditemukan yang memiliki "param" dalam nama filenya. param.c, param_one.c, dan param_two.c semuanya memiliki “param” di awal namanya. third_param.c memiliki “param” di akhir namanya, tepat sebelum ekstensi.
The rename
perintah akan mencari “param” di mana-mana dalam nama file, dan menggantinya dengan “parameter” dalam semua kasus.
Penggunaan kedua dari ls
perintah tersebut menunjukkan kepada kita bahwa itulah yang sebenarnya terjadi. Apakah "param" ada di awal atau di akhir nama file, ini telah diganti dengan "parameter".
Kita bisa menggunakan metakarakter Perl untuk memperbaiki perilaku ekspresi tengah. Metakarakter adalah simbol yang merepresentasikan posisi atau urutan karakter. Misalnya, ^
berarti "awal string", $
berarti "akhir string", dan .
berarti karakter tunggal apa pun (selain karakter baris baru).
Kami akan menggunakan awal dari string metacharacter ( ^
) untuk membatasi pencarian kami ke awal nama file.
ls * param * .c
ganti nama 's / ^ parameter / nilai /' * .c
ls * param * .c
Nilai ls * .c
File yang kita ganti namanya sebelumnya terdaftar, dan kita bisa melihat string "parameter" ada di awal tiga nama file dan itu ada di akhir salah satu nama file.
rename
Perintah kami menggunakan awal baris (^
) metakarakter sebelum istilah penelusuran "parameter". Ini memberitahu rename
untuk hanya mempertimbangkan istilah pencarian yang telah ditemukan jika berada di awal nama file. String pencarian "parameter" akan diabaikan jika berada di tempat lain dalam nama file.
Memeriksa dengan ls
, kita dapat melihat bahwa nama file yang memiliki "parameter" di akhir nama file belum diubah, tetapi tiga nama file yang memiliki "parameter" di awal namanya memiliki string pencarian yang diganti dengan istilah pengganti "nilai."
Kekuatan rename
kebohongan ada pada kekuatan Perl. Semua kekuatan Perl siap membantu Anda.
Pencarian Dengan Pengelompokan
rename
memiliki lebih banyak trik di lengan bajunya. Mari pertimbangkan kasus di mana Anda mungkin memiliki file dengan string serupa di namanya. Mereka bukanlah string yang persis sama, jadi pencarian dan substitusi sederhana tidak akan berfungsi di sini.
Dalam contoh ini kami gunakan ls
untuk memeriksa file mana yang kami miliki yang dimulai dengan "str". Ada dua di antaranya, string.c dan strangle.c. Kita dapat mengganti nama kedua string sekaligus menggunakan teknik yang disebut pengelompokan.
Ekspresi sentral dari rename
perintah ini akan mencari string dalam nama file yang memiliki urutan karakter "stri" atau "stra" di mana urutan tersebut segera diikuti oleh "ng". Dengan kata lain, istilah pencarian kita akan mencari "string" dan "strang". Istilah substitusi adalah "bang".
ls str * .c
ganti nama 's / (stri | stra) ng / bang /' * .c
ls ban * .c
Menggunakan ls
kedua kalinya mengonfirmasi bahwa string.c telah menjadi bang.c dan strangle.c sekarang menjadi bangle.c.
Menggunakan Terjemahan Dengan ganti nama
The rename
perintah dapat melakukan tindakan pada nama file yang disebut terjemahan. Contoh sederhana dari terjemahan akan memaksa satu set nama file menjadi huruf besar.
Pada rename
perintah di bawah, perhatikan bahwa kami tidak menggunakan a s/
untuk memulai ekspresi pusat, yang kami gunakan y/
. Ini memberitahu rename
kita tidak melakukan substitusi; kami sedang melakukan terjemahan.
The a-z
Istilah adalah ekspresi Perl yang berarti semua karakter huruf kecil di urutan dari a sampai z. Demikian pula, A-Z
istilah tersebut mewakili semua huruf besar dalam urutan dari A hingga Z.
Ekspresi sentral dalam perintah ini dapat diparafrasekan sebagai "jika salah satu huruf kecil dari a hingga z ditemukan dalam nama file, gantilah dengan karakter yang sesuai dari urutan karakter huruf besar dari A hingga Z."
Untuk memaksa nama file dari semua file ".prg" menjadi huruf besar, gunakan perintah ini:
ganti nama 'y / az / AZ /' * .prg
ls * .PRG
The ls
perintah menunjukkan kepada kita bahwa semua “.PRG” nama file sekarang dalam huruf besar. Faktanya, untuk lebih akuratnya, mereka bukan lagi file ".prg". Itu adalah file ".PRG". Linux peka huruf besar / kecil.
Kita dapat membalikkan perintah terakhir itu dengan membalik posisi a-z
dan suku-suku A-Z
di ekspresi tengah.
ganti nama 'y / AZ / az /' * .PRG
ls * .prg
Anda (Wo | Do) tidak Belajar Perl dalam Lima Menit
Menguasai Perl adalah menghabiskan waktu dengan baik. Tetapi untuk mulai menggunakan kapabilitas penghemat waktu dari rename
perintah, Anda tidak perlu memiliki banyak pengetahuan Perl sama sekali untuk mendapatkan keuntungan besar dalam hal daya, kesederhanaan, dan waktu.