Добувати
Ми можемо використовувати zipinfo
як частину цього процесу, це програма з zip
пакету.
zipinfo -2 example.zip
покаже лише імена файлів у example.zip
, приблизно так:
file1-long-name-...-bla-bla.html
file2-long-name-...-bla-bla.html
тож ми можемо використовувати цю функцію для вилучення всіх файлів:
zipinfo -2 example.zip | while read i;
do
long_fname=${i%.*}
unzip -p -c example.zip "$i" > "${long_fname:0:250}.${i##*.}"
done;
long_fname=${i%.*}
: Видаляє розширення з довгого імені файлу, тому у випадку, якщо ім'я файлу менше 256 символів; Ми не збираємось отримувати дублікати розширення.
${long_fname:0:250}.${i##*.}
: Створюється нове ім'я файлу з законним числом символів, також додається .
і реальне розширення файлу.
Просто ми потрапляємо в список файлів і витягуємо кожен з них з новим законним ім'ям файлу, що має 256 символів.
Перейменувати
Ви можете використовувати zipnote
команду, вона також є частиною zip
пакету.
Спершу отримайте резервну копію вашого поштового файлу.
Виконайте цю команду:
zipnote example.zip > names
Відкрийте імена за допомогою редактора, це виглядає приблизно так:
@ file name long in zip and a lot of other strings in the file name
@ (comment above this line)
@ (zip file comment below this line)
Додати нові імена файлів, як це:
@ file name long in zip and a lot of other strings in the file name
@=new short name for above file
@ (comment above this line)
@ (zip file comment below this line)
Потім для перейменування файлів використовуйте:
zipnote -w example.zip < names
Ви перейменували їх усіх, ви також можете написати простий сценарій, який зробить це автоматично для вас.
unzip -l <ARCHIVE>
і як ви хочете, щоб імена були усічені? Ви хочете зберегти структуру каталогів всередині архіву під час вилучення?