Wydobywać
Możemy wykorzystać zipinfo
jako część tego procesu, jest to program z zip
pakietu.
zipinfo -2 example.zip
pokaże tylko nazwy plików example.zip
, coś wygląda jak:
file1-long-name-...-bla-bla.html
file2-long-name-...-bla-bla.html
dzięki czemu możemy użyć tej funkcji do wyodrębnienia wszystkich plików:
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%.*}
: Usuwa rozszerzenie z długiej nazwy pliku, więc w przypadku gdy nazwa pliku jest mniejsza niż 256 znaków; Nie otrzymamy duplikatu rozszerzenia.
${long_fname:0:250}.${i##*.}
: Tworzy nową nazwę pliku z prawidłową liczbą znaków, dodaje także .
rozszerzenie „a” pliku.
Po prostu zapętlamy listę plików i wypakowujemy każdy z nich nową, prawidłową nazwą pliku, która ma 256 znaków.
Aby zmienić nazwę
Możesz użyć zipnote
polecenia, to także część zip
pakietu.
Najpierw wykonaj kopię zapasową pliku zip.
Uruchom to polecenie:
zipnote example.zip > names
Otwórz nazwy za pomocą edytora, wygląda to tak:
@ 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)
Dodaj nowe nazwy plików w następujący sposób:
@ 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)
Następnie, aby zmienić nazwę plików, użyj:
zipnote -w example.zip < names
Zmieniłeś ich nazwy, możesz też napisać prosty skrypt, który zrobi to automatycznie.
unzip -l <ARCHIVE>
i jak chcesz obcinać nazwy? Czy chcesz zachować strukturę katalogów w archiwum podczas rozpakowywania?