Mengganti nama file dan direktori adalah salah satu tugas paling mendasar yang sering perlu Anda lakukan pada sistem Linux.

Mengganti nama file tunggal itu mudah, tetapi mengganti nama banyak file sekaligus bisa menjadi tantangan, terutama bagi pengguna yang baru mengenal Linux. Anda dapat mengganti nama file menggunakan File manager di sistem yang mendukung GUI. Lalu bagaimana jika Anda bekerja di sistem yang hanya mendukung baris perintah?.

Diharapkan Anda membuka konsol terminal distribusi Linux untuk mengikuti panduan di halaman ini agar Anda lebih memahami cara mengubah nama file atau direktori melalui Linux Terminal.

Kami juga sarankan Anda untuk menguji setiap tutorial atau panduan apapun yang ada di Internet di virtual machine (vmware atau virtualbox) sebelum menerapkan ke server produksi, agar tidak mengacaukan sistem yang aktif berjalan ketika ada kesalahan.

Anda bisa melihat cara installasi VMware di Ubuntu dan CentOS, dan VirtualBox di UbuntuFedora, dan CentOS

Dalam tutorial ini, kami akan menunjukkan kepada Anda cara menggunakan perintah mv dan perintah rename untuk mengganti nama file dan direktori.

Mengganti nama file dengan Perintah mv

Perintah mv ( singkatan dari move) digunakan untuk mengubah nama atau memindahkan file dari satu lokasi ke lokasi lain.

Sintaks untuk perintah mv adalah sebagai berikut:

mv [OPTIONS] sumber tujuan

sumber dapat berupa satu atau lebih file atau direktori dan tujuan dapat berupa satu file atau direktori.

  • Jika Anda menentukan beberapa file sebagai sumber, tujuan harus berupa direktori. Dalam hal ini, file sumber dipindahkan ke direktori target.
  • Jika Anda menentukan satu file sebagai sumber, dan target tujuan adalah direktori yang ada maka file tersebut akan dipindahkan ke direktori yang ditentukan.
  • Untuk mengganti nama file, Anda perlu menentukan satu file sebagai sumber, dan satu file sebagai target tujuan.

Misalnya, untuk mengubah nama file dari file1.txt menjadi file2.txt Anda dapat menjalankan perintah berikut:

mv file1.txt file2.txt

Cara Mengganti nama beberapa file dengan Perintah mv

Perintah mv hanya dapat mengganti nama satu file pada satu waktu, tetapi dapat digunakan bersama dengan perintah lain, seperti perintah find atau dalam skrip bash for atau while loop untuk mengganti nama beberapa file.

Contoh berikut menunjukkan cara menggunakan Bash for loop untuk mengubah nama semua file .txt di direktori kerja saat ini dengan mengubah ekstensi .txt menjadi .php.

for f in *.txt; do 
    mv -- "$f" "${f%.txt}.php"
done

Mari kita menganalisis kode baris demi baris:

  • Baris pertama membuat loop untuk statement for , untuk mencari semua daftar file yang berakhiran  dengan .txt.
  • Baris kedua berlaku untuk setiap item di dalam daftar dan memindahkan file ke yang format baru menggantikan .txt dengan .php. Bagian ${file%.txt} menggunakan ekspansi parameter shell untuk menghapus bagian .txt dari nama file.
  • done, berarti mengindikasikan akhir dari segmen loop.

Kita juga dapat menggunakan perintah mv dalam kombinasi dengan find untuk mencapai hasil yang sama seperti di atas.

find . -depth -name "*.txt" -exec sh -c 'f="{}"; mv -- "$f" "${f%.txt}.php"' \;

Perintah find melewati semua file yang diakhiri dengan .txt di direktori saat ini ke perintah mv satu per satu menggunakan switch -exec. String {} adalah nama file yang akan diproses.

Seperti yang Anda lihat dari contoh di atas, mengganti nama beberapa file menggunakan perintah mv bukanlah tugas yang mudah karena membutuhkan pengetahuan yang baik tentang skrip Bash.

Mengganti nama file dengan perintah rename

Perintah rename digunakan untuk mengganti nama banyak file. Perintah ini lebih maju dibanding perintah mv , karena memerlukan pengetahuan dasar tentang ekspresi reguler.

Ada dua versi perintah rename dengan sintaks yang berbeda. Dalam tutorial ini, kita akan menggunakan versi perl dari perintah rename. Jika Anda belum menginstal rename di sistem Anda, Anda dapat menginstalnya dengan mudah menggunakan manajer paket distribusi Anda.

  • Install rename di Ubuntu dan Debian
    sudo apt install rename
  • Install rename di CentOS dan Fedora
    sudo yum install prename
  • Install rename di Arch Linux
    yay perl-rename ## atau yaourt -S perl-rename

Sintaks perintah rename sebagai berikut :

rename [OPTIONS] perlexpr files

Perintah rename akan mengganti nama semua files sesuai dengan ekspresi reguler perlexpr yang ditentukan. Anda dapat membaca lebih lanjut tentang ekspresi reguler perl di sini.

Misalnya, perintah berikut akan mengubah semua file dengan ekstensi .txt ke .py:

rename 's/.txt/.py/' *.txt

Anda bisa menggunakan argumen -n untuk mencetak nama file yang akan diganti namanya, tanpa mengubah nama mereka.

rename -n 's/.txt/.py/' *.html

Output dari perintah di atas :

rename(file-10.txt, file-10.py)
rename(file-11.txt, file-11.py)
rename(file-12.txt, file-12.py)
rename(file-13.txt, file-13.py)
rename(file-14.txt, file-14.py)

Secara default, perintah rename tidak akan menimpa file yang ada. Gunakan argumen -f untuk memungkinkan file yang ada agar di timpa.

rename -f 's/.txt/.py/' *.html

Di bawah ini adalah beberapa contoh umum tentang cara menggunakan perintah rename :

  • ubah spasi di nama file menjadi underscores (misal ini_adalah_nama_file)
    rename 'y/ /_/' *
  • Ubah nama file menjadi lowercase (huruf kecil semua)
    rename 'y/A-Z/a-z/' *
  • Ubah nama file menjadi uppercase (huruf besar semua)
    rename 'y/a-z/A-Z/' *

Kesimpulan

Sekarang Anda sudah memiliki pemahaman yang baik tentang bagaimana menggunakan perintah mv dan perintah rename untuk mengganti nama file. Tentu saja ada perintah lain untuk mengganti nama file di Linux seperti mmv. Pengguna Linux baru yang terintimidasi oleh baris perintah dapat menggunakan alat mengubah nama batch GUI seperti Métamorphose.