GNU/Linux >> Belajar Linux >  >> Linux

Apakah ada perintah linux seperti mv tetapi dengan regex?

Seperti yang telah disebutkan orang lain, rename bagus dalam hal ini, tetapi baca halaman manualnya (man rename ) sebelum Anda mencobanya. Setidaknya ada dua alat yang sama sekali berbeda di luar sana yang disebut rename dan mana yang Anda miliki akan bergantung pada distribusi Anda. Salah memanggil mereka bisa berbahaya.

Inilah halaman manual untuk versi berbasis perl oleh Larry Wall yang disertakan dengan Ubuntu. Anda memberinya ekspresi perl seperti rename 's/\.sql$/.php/' *.sql

Inilah halaman manual untuk mengganti nama yang dikirimkan dengan distribusi Red Hat dan CentOS yang lebih lama. Penggunaannya adalah substitusi string sederhana seperti rename .sql .php *.sql

Anda juga bisa menggunakan bash one-liner untuk memproses setiap file satu per satu:

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

Ada rename(1) , yang tidak menggunakan regex, tetapi dapat menyelesaikan masalah Anda:

rename .sql .php *.sql

Ada juga mmv(1) , tapi saya tidak terbiasa dengan cara kerjanya.


Selamat,

Anda juga dapat mencoba memasukkan

for i in $(\ls -d *.sql)
do
mv $i $(echo $i | sed -e 's/\.sql$/\.php/')
done

Atau untuk membuatnya menggunakan regex, ubah sedikit menjadi

for i in $(\ls -d | egrep -e '.*\.sql')
do
mv $i $(echo $i | sed -e 's/\.sql$/\.php/')
done

untuk sedikit kesenangan pengkodean shell. (-:


Linux
  1. Cara Mengganti Nama File di Linux

  2. Perintah kepala Linux dengan Contoh

  3. Perintah ganti nama Linux

  1. Perintah Tee Linux dengan Contoh

  2. Tutorial Perintah Ganti Nama Linux untuk Pemula (dengan Contoh)

  3. Mengganti nama file di linux dengan regex

  1. Perintah wc Linux dengan Contoh

  2. Perintah JQ di Linux dengan Contoh

  3. perintah sed dengan opsi -i gagal di Mac, tetapi berfungsi di Linux