Saya memiliki direktori ini, dan ingin mengubah nama file:
===> ls -1 Der-vierte-Weise/
10 - 10 - Erkenntniss.ogg
1 - 01 - Hoffnung.ogg
11 - 11 - Wahrheit.ogg
12 - 12 - Dankbarkeit.ogg
13 - 13 - Kredits.ogg
2 - 02 - Familie.ogg
3 - 03 - Demut.ogg
4 - 04 - Freude.ogg
5 - 05 - Schoenheit.ogg
6 - 06 - Solidaritaet.ogg
7 - 07 - Entscheidung.ogg
8 - 08 - Hilfe.ogg
9 - 09 - Unterstuetzung.ogg
Hasilnya akan terlihat seperti ini:
===> ls -1 Der-vierte-Weise/
01 - Hoffnung.ogg
02 - Familie.ogg
...
Saya ingin menyelesaikan ini dengan alat shell umum.
command-line
bash
batch-rename
guettli
sumber
sumber
Jawaban:
Anda bisa menggunakan
rename
...Hapus
-n
setelah pengujian untuk benar-benar mengganti nama filePenjelasan
s/old/new/
gantiold
dengannew
^
mulai dari string[0-9]+
beberapa angkasumber
rename
alat ini. Apakah ini menggunakan PCRE? ... akan luar biasa.rename
adalah skrip Perl sehingga memiliki dukungan ekspresi reguler Perl penuh; PCRE hanya sebagian dari itu. Namun, apa pun yang Anda ketahui dari PCRE akan berlaku untukrename
.rename
memiliki ekspresi reguler yang kompatibel dengan perl. Ya, implementasi pcre tidak digunakan. Saya mengerti ini :-) Terima kasih atas balasan cepat Anda.bash
ekspansi parameter untuk menghapus bagian yang diperlukan dari awal:Formulir diperluas:
echo
untuk pengeringan; singkirkan itu untuk tindakan nyata:Contoh:
sumber
rename
perintah. (Kurang mengetik perlu).rename
adalah cara untuk pergi jika Anda terbiasa dengan PCRE; yangrename
jawabannya sudah diberikan sehingga harus pindah dengan murnibash
. Hanya untuk catatan,python
'sre
(atauregex
) modul tidak sepenuhnya PCRE kompatibel BTW.${f#[[:digit:]]*-[[:blank:]]}
jelek. Ya itu berhasil. Tapi kita hidup di abad ke-21. Saya pikir sudah saatnya untuk beralih dari "itu bekerja" ke "itu mudah dan menyenangkan". Jika "itu berfungsi" adalah tujuannya, maka linux tidak akan pernah lepas dari prasangka tidak ramah pengguna. Karena Anda sudah mendapatkan banyak suara, suara yang satu ini seharusnya tidak sakit (saya harap). Jika ya, beri tahu saya, dan saya akan mengambilnya kembali.[[:digit:]]
dan[[:blank:]]
ada di sana untuk mematuhi Andalocale
, ini juga cukup umum di Regex.