Saya belum banyak berhasil menemukan namemangler versi Linux , yang saya perlukan untuk mengganti nama 1000 file sehingga dapat dibaca di Windows.
Adakah yang tahu tentang program Linux yang bisa melakukan ini?
Jika tidak, maka skrip mungkin berfungsi karena saya hanya perlu mengganti nama semua file dalam folder untuk, katakanlah, 16 karakter pertama. Saya menduga bahwa rute skrip mungkin layak turun tetapi tidak yakin harus mulai dari mana.
Jawaban:
Pada Debian, Ubuntu dan turunannya, jika Anda masuk
man rename
pada prompt perintah, Anda akan mendapatkan halaman manual untuk utilitas penggantian nama yang memungkinkan perintah ekspresi reguler Perl-like yang sewenang-wenang untuk digunakan dalam penggantian nama.Sebagai contoh, ini akan mempersingkat (dengan memotong) semua file dalam direktori saat ini menjadi lima:
Ini bekerja dengan menangkap lima karakter pertama kemudian menggunakannya dalam substitusi, menghilangkan sisanya.
Contoh lain adalah mempersingkat nama file (tanpa ekstensi) menjadi lima karakter sambil mempertahankan ekstensi:
Ini menangkap dua kelompok, yang pertama adalah lima karakter pertama, yang kedua adalah ekstensi. Ini akan berubah
myCarefullyCraftedDocument.pdf
menjadimyCar.pdf
.Peringatan: Gunakan ini dengan hati-hati, lebih disukai pada salinan direktori Anda, atau dengan mengambil cadangan terlebih dahulu. Anda telah diperingatkan!! Minimal, gunakan
rename -n
dulu, yang akan menunjukkan kepada Anda apa yang akan dilakukan tanpa benar-benar melakukannya.sumber
Anda dapat memindahkan file yang konflik ke direktori lain:
sumber
Anda dapat menulis skrip untuk mempersingkat nama file dan menghapus karakter yang tidak disukai Windows dalam beberapa baris bash. Peringatan, kode yang belum diuji, diketik langsung ke browser saya.
Jika Anda perlu mengulang ke dalam subdirektori, panggil skrip shell dari
find -depth -exec …
. Atau gunakan zsh sebagai ganti bash; di zsh,**/*(od)
perluas ke semua file di bawah direktori saat ini, secara rekursif, dengan file yang bersarang lebih dalam terlebih dahulu.sumber
Script shell / python / perl untuk hal semacam ini baik-baik saja, tetapi sepertinya aplikasi gui akan lebih baik untuk Anda, jadi saya akan merekomendasikan pyRenamer , yang dapat melakukan apa yang Anda inginkan, di antara banyak hal lain (operasi umum sederhana melalui preset [menghilangkan spasi, memotong nama file dari satu titik ke titik lain], pencarian / penggantian sederhana, regex yang rumit, previewer, dll).
Distribusi Anda bahkan mungkin memilikinya dalam repositori perangkat lunak mereka (Fedora tidak).
sumber
Beberapa sistem tidak memiliki
rename
perintah, jadi sebagai alternatif untuk jawaban paxdiablo, berikut adalah cara melakukan hal yang sama dengannyamv
.The
-b
bendera bergerak membuat cadangan file yang akan dihapus atau ditimpa. Dengan mengubah pola gumpalan pada for loop Anda dapat menyesuaikan file apa yang dijalankannya, menggunakan*
dengan sendirinya untuk dijalankan pada semua file.sumber
echo
dan pipa (bisa sangat mahal jika Anda memiliki banyak file), gunakan heredoc atau herestring sebagai gantinya.eval 'echo $BASH_SUBSHELL'
daneval 'echo $BASH_SUBSHELL' | cat
.time
menggunakan loopecho $i | sed
dan menggunakan lagised ... <<<$i
, dan herestring mengambil sekitar 2/3 waktu gema.<<
memulai <i> doc </i> di sini, yang multi-line dan membutuhkan pembatas.<<<
membuat <i> string </i> di sini, yang hanya membutuhkan satu variabel / string. Cobalahvar=abc // cat<<<$var // cat <<$var
,.Jika Anda perlu bereksperimen dengan mengganti nama file dan kebetulan memiliki pustaka KDE diinstal pada sistem Anda (atau tidak keberatan menambahkannya), periksa krename.
Ini memungkinkan Anda untuk melakukan beberapa tugas penggantian nama sederhana secara langsung dengan alat-alatnya dan juga memungkinkan ekspresi reguler untuk situasi yang lebih rumit.
Ini menunjukkan kepada Anda pratinjau file berganti nama saat Anda membangun kondisi penggantian nama. Hal ini juga memungkinkan Anda untuk mengganti nama file yang sama lagi yang bermanfaat jika Anda ingin melakukan sesuatu yang rumit di mana melakukannya secara bertahap akan mengurangi kompleksitas setiap tahap menjadi sesuatu yang dapat Anda ketahui dengan cepat.
sumber
sumber