Saya memiliki satu ton file, semua diberi nama hal-hal seperti 1.jpg
, 2.jpg
, 3.jpg
, dan seterusnya sampai 1439.jpg
, namun, saya punya masalah dengan salah satu proyek saya dan alfabetis. Ini biasanya akan pergi dalam urutan 1.jpg
, 10.jpg
, 11.jpg
dan sebagainya.
Yang saya butuhkan adalah beberapa cara untuk memberi nama file sehingga mereka berada dalam format seperti 00001.jpg
sepanjang jalan 01439.jpg
.
Bagaimana saya bisa melakukan ini dengan cepat dan efisien?
scripts
batch-rename
Kaz Wolfe
sumber
sumber
ls -v
unix.stackexchange.com/questions/33909/…pyrenamer
.Jawaban:
Ubuntu hadir dengan skrip bernama
rename
. Hanya sedikit skrip Perl yang menampilkan sejumlah fitur penggantian nama massal yang kuat tetapi yang terbaik (dalam hal ini) adalah kemampuannya untuk menjalankan Perl selama penggantian. Hasilnya adalah solusi yang benar-benar kompak:Ini mirip dengan
printf
jawaban-gaya lain di sini tapi itu semua ditangani untuk kita. Kode di atas adalah untuk angka 5 digit (termasuk angka variabel nol di awal).Ini akan mencari dan mengganti angka-string pertama yang ditemukannya dengan versi nol-empuk dan meninggalkan sisa nama file. Ini berarti Anda tidak perlu terlalu khawatir membawa ekstensi atau awalan.
Catatan: ini tidak sepenuhnya portabel. Banyak distribusi menggunakan
rename.ul
dariutil-linux
paket sebagairename
biner default mereka . Ini adalah alternatif yang terhambat secara signifikan (lihatman rename.ul
) yang tidak akan memahami hal di atas. Jika Anda ingin ini pada platform yang tidak menggunakan nama Perl, temukan cara menginstalnya terlebih dahulu.Dan inilah test harness:
Dan contoh awalan (kami tidak melakukan hal yang berbeda):
sumber
sprintf
di Perl berperilaku mirip dengansprintf
dalam bahasa lain.Edit
Penjelasan:
if [[ $f =~ [0-9]+\. ]]
memastikan bahwa hanya file yang namanya angka (diikuti titik) yang diganti namanya.printf "%.5d" NUMBER
menambahkan nol terkemuka"${f%.*}"
memotong ekstensi (.jpg) dan hanya menyisakan nomor.jpg
setelah backtick kedua menambahkan ekstensi file lagi.Perhatikan bahwa ini hanya akan berfungsi pada nama file yang angka. Nol terkemuka yang mengarah ke kiri ke file yang tidak bernomor akan membutuhkan format yang berbeda.
Jika Anda ingin bereksperimen coba perintah ini:
Edit 2
Membuat perintah lebih aman dengan memastikan bahwa hanya nama file yang angka sedang diganti namanya. Perhatikan bahwa file yang sudah ada sebelumnya yang bernama 00001.jpg akan ditimpa.
sumber
Di bawah skrip python.
Skrip menambahkan angka nol di depan hingga jumlah digit yang ditentukan. Jika nama lebih besar dari itu, file (nama) tidak tersentuh.
Menggabungkan berbagai ekstensi dalam satu tindakan mengubah nama mungkin menambah kenyamanan. Untuk menambahkan ekstensi, cukup tambahkan mereka ke tuple, misalnya
extensions = (".jpg", ".jpeg", ".tiff")
.Salin teks ke dalam file kosong, simpan sebagai
rename.py
, masukkan jalur yang benar ke direktori file (sourcedir
), jumlah digit yang Anda ingin memiliki nama baru (number_ofdigits
) dan ekstensi file untuk mengubah nama (extensions
)Jalankan dengan perintah:
Naskah:
edit:
Di bawah versi yang sedikit lebih baik. Secara otomatis menentukan nama terpanjang dalam direktori, dan menambahkan nol di depan hingga panjang nama terpanjang.
contoh:
menjadi:
Tidak perlu mengatur jumlah digit.
sumber
Ada utilitas rename yang diterapkan di Perl yang membuatnya sangat mudah:
Argumen pertama adalah ekspresi Perl yang dievaluasi untuk setiap nama file.
sumber
Ada GUI yang akan melakukan ini disebut pyRenamer yang dapat ditemukan di repositori. Instal, mulai, pilih direktori Anda dan cukup tetapkan 'Pola nama file yang diubah namanya' menjadi '{num5}' pada tab 'Pola' dan klik tombol 'Ubah Nama'. Anda juga dapat melihat pratinjau apa yang akan terjadi sebelum penggantian nama.
sumber
shell-scripting
bagian, artinya saya mencari jawaban baris perintah. Juga, dapatkah Anda memberikan detail lebih lanjut tentang program ini? Misalnya, format pola apa itu{num5}
?Ini kasar, karena tidak melakukan penggantian nama secara cerdas, perlu memikirkan trik untuk itu. Tapi itu akan membantu Anda menyortir barang.
Pembaruan: Yah, Anda punya jawaban yang lebih lengkap.
sumber