Saya mencoba mencari file tertentu dengan nama "stringx" dan mengganti namanya (tetapi bukan ekstensinya) dengan "stringy". Jadi pada dasarnya untuk stringx.txt dan stingx.cs, saya ingin stringy.txt dan stringy.cs. Saya telah mencoba menguji perintah rename regex saya menggunakan yang berikut, tetapi tidak memberikan hasil:
rename -n 'stringx./s/*$stringy.//' stringx.*
Saya menjalankan csh di bawah Centos. Saya dapat melihat bahwa ekspresi reguler saya mungkin tidak benar, tetapi saya tidak dapat melihat hasil apa pun untuk memverifikasi ini. Saya dapat melihat bahwa ada file yang bernama stringx. dengan sebagai berikut:
find ./ -name 'stringx.*'
Jawaban yang Diterima:
rename stringx stringy stringx.*
Ada (setidaknya) dua utilitas yang disebut rename
pada sistem Linux yang khas. Debian dan distribusi turunan (termasuk Ubuntu) mengirimkan skrip Perl yang sintaksnya adalah
rename 's/stringx/stringy/' stringx.*
Pada distribusi lain, termasuk CentOS, rename
berasal dari util-linux, dan sintaksnya adalah apa yang saya tulis di atas. Utilitas ini tersedia dengan nama rename.ul
di Debian dan turunannya.
Jika Anda ingin mengulang di subdirektori, dengan asumsi bahwa dengan csh yang Anda maksud adalah tcsh (tapi sungguh, pikirkan memasuki pertengahan 1990-an dan beralih ke zsh):
set globstar
rename stringx stringy stringx.* **/stringx.*