Saya memiliki zip yang berisi file dengan nama yang sangat panjang.
Jika saya mencoba mengekstrak pada baris perintah, saya mendapatkan kesalahan "Nama file terlalu panjang".
Jika saya menggunakan manajer arsip grafis itu tidak akan mengekstrak file dan tidak akan membiarkan saya mengganti nama mereka. Masalah yang sama terjadi jika saya memasang arsip.
Saya dapat mengekstraksi dan mengganti nama file secara individual menggunakan:
unzip -p -c example.zip "long file name.ogg" > shortname.ogg
Ini tidak praktis dengan banyak file.
Apakah ada alat yang akan memotong nama file saat mereka diekstraksi?
unzip -l <ARCHIVE>
dan bagaimana Anda ingin nama-nama terpotong? Apakah Anda ingin mempertahankan struktur direktori di dalam arsip selama ekstraksi?Jawaban:
Untuk mengekstrak
Kita dapat menggunakan
zipinfo
sebagai bagian dari proses ini, ini adalah program darizip
paket.hanya akan menampilkan nama file
example.zip
, sesuatu yang terlihat seperti:jadi kami dapat menggunakan fitur ini untuk mengekstrak semua file:
long_fname=${i%.*}
: Menghapus ekstensi dari nama file yang panjang, jadi jika nama file kurang dari 256 karakter; Kami tidak akan mendapatkan ekstensi duplikat.${long_fname:0:250}.${i##*.}
: Membuat nama file baru dengan jumlah karakter yang sah juga menambahkan.
dan mengajukan ekstensi nyata.Cukup kita beralih ke daftar file dan mengekstrak masing-masing dengan nama file yang sah baru yaitu 256 karakter.
Untuk mengganti nama
Anda dapat menggunakan
zipnote
perintah, itu adalah bagian darizip
paket juga.Dapatkan cadangan file zip Anda terlebih dahulu.
Jalankan perintah ini:
Buka nama menggunakan editor, tampilannya seperti ini:
Tambahkan nama file baru seperti ini:
Kemudian untuk mengganti nama file gunakan:
Anda mengganti nama mereka semua, Anda juga dapat menulis skrip sederhana yang melakukan ini secara otomatis untuk Anda.
sumber
IFS= read -r i
jika nama file dimulai dengan spasi putih atau berisi hal-hal yang shell mungkin tafsirkan sebagai urutan melarikan diri.