Mungkin Anda harus menggunakan perintah perl rename. Di kotak CentOS saya, ini disebut 'nama samaran'.
$ ls
IMG_1.JPG IMG_2.JPG IMG_3.JPG
$ prename 's/^IMG/img/;s/\.JPG$/\.jpg/' *JPG
$ ls
img_1.jpg img_2.jpg img_3.jpg
$
$ prename -h
Usage: prename [OPTION]... PERLEXPR FILE...
Rename FILE(s) using PERLEXPR on each filename.
-b, --backup make backup before removal
-B, --prefix=SUFFIX set backup filename prefix
-f, --force remove existing destinations, never prompt
-i, --interactive prompt before overwrite
-l, --link-only link file instead of reame
-n, --just-print, --dry-run don't rename, implies --verbose
-v, --verbose explain what is being done
-V, --version-control=METHOD override the usual version control
-Y, --basename-prefix=PREFIX set backup filename basename prefix
-z, -S, --suffix=SUFFIX set backup filename suffix
--help display this help and exit
--version output version information and exit
The backup suffix is ~, unless set with SIMPLE_BACKUP_SUFFIX. The
version control may be set with VERSION_CONTROL, values are:
numbered, t make numbered backups
existing, nil numbered if numbered backups exist, simple otherwise
simple, never always make simple backups
Report bugs to [email protected]
$
Jika Anda ingin menggunakan rename
perintah bodoh dari util-linux
(kadang-kadang disebut rename.ul
), mungkin perlu dilakukan dalam dua langkah, misalnya
$ ls
IMG_1.JPG IMG_2.JPG IMG_3.JPG
$ rename IMG img *JPG
$ rename JPG jpg *JPG
$ ls
img_1.jpg img_2.jpg img_3.jpg
$
perl
rename
predate the dumbrename
ditemukan di util-linux yang Anda panggil lamarename
. Bahkan mendahului Linux.Untuk menjawab pertanyaan Anda dalam generik,
Anda biasanya akan menggunakan kelompok capture , merujuk kepada mereka dalam ekspresi pengganti menggunakan sesuai mereka backreferences . Sebagai contoh
Namun, dalam kasus khusus ini, akan lebih mudah untuk hanya menerapkan pengubah huruf kecil
\L
ke seluruh nama:Alternatif lain, menggunakan
mmv
(hapus
-n
untuk benar-benar melakukan penggantian nama).sumber
zmv
:zmv '*.JPG' '${(L)f}'
rename 's/.*/\L$&/' *.JPG
adalahrename '$_ = lc' *.JPG
Menggunakan
mv
:sh kompatibel:
bash (Terima kasih steeldriver):
Ini akan mengulang semua
.JPG
file dalam direktori saat ini dan mengubah nama mereka ke nama yang sama dengan semua karakter huruf besar dikonversi ke karakter huruf kecil.sumber
Cara paling sederhana dan berdasarkan halaman manual yang tidak mencakup ekspresi reguler :
sumber