ambil 2 nomor dari nama file lalu masukkan ke dalam perintah

Saya agak baru dalam pemrograman secara umum dan saya tidak yakin bagaimana cara menyelesaikan tugas ini di skrip bash saya.

Latar belakang singkat: ketika mengimpor perpustakaan musik saya (sebelumnya diselenggarakan oleh iTunes) ke Banshee, semua file diduplikasi agar sesuai dengan gaya nomor Banshee (misal: 02. bukannya 02 ) selain itu, iTunes rupanya tidak menyimpan ID3 tag ke file, banyak di antaranya yang kosong. Jadi sekarang saya punya beberapa ribu tag untuk diperbaiki dan file duplikat untuk dihilangkan.

Untuk mengotomatiskan prosesnya, saya mulai belajar menulis skrip bash. Saya membuat skrip (yang dapat Anda lihat di sini) yang melakukan empat hal: menghapus file iTunes yang tidak perlu, mengambil masukan dari pengguna tentang informasi Tag ID3 dan menyimpannya dalam variabel, menghapus semua info tag yang ada dari semua file, menulis tag baru dengan info yang diambil dari pengguna, menggunakan program yang disebut eyeD3.

Sekarang, di sinilah saya mengalami masalah saya. Skrip ini pada dasarnya menulis info secara membabi buta ke semua file mp3 di direktori. Ini bagus untuk tag yang memiliki kesamaan semua file - seperti artis, album, total lagu, tahun, dll. Tapi saya tidak bisa menandai setiap nomor trek dengan metode ini. Jadi saya masih mengedit tag track# satu per satu, secara manual. Dan itu adalah sesuatu yang saya benar-benar tidak ingin melakukannya 2.000+ kali.

Semua nama file terlihat seperti ini:

01. song1.mp3
02. song2.mp3
03. song3.mp3

Perintah untuk menulis nomor trek ke sebuah tag terlihat seperti ini:

$ eyeD3 -n 1 "01. song1.mpg"

Jadi... Saya tidak yakin bagaimana cara mengotomatiskannya. Saya perlu mengambil dua digit pertama dari setiap nama file, menyimpannya di suatu tempat, lalu mengingat masing-masing digit tersebut ke dalam perintah eyeD3 terpisah.


person PatMcTookis    schedule 15.04.2014    source sumber
comment
Mungkin ada cara yang sedikit berbeda. Saya baru saja memeriksa, Banshee memiliki plugin layanan Musicbrainz. Dengan menggunakan plugin ini Anda dapat mencoba mengisi tag ID3 secara otomatis.   -  person user3159253    schedule 15.04.2014
comment
Ini bisa menjadi cara yang lebih produktif untuk menyelesaikan tugas daripada mengurai setiap nama file karena nama file sering kali tidak memuat informasi tag keseluruhan, hanya judul lagu.   -  person user3159253    schedule 15.04.2014


Jawaban (1)


Anda dapat mengulang file menggunakan globbing, dan menggunakan ekspansi substring untuk menangkap dua karakter pertama nama file:

for f in *mp3; do
    eyeD3 -n ${f:0:2} "$f"
done
person Josh Jolly    schedule 15.04.2014