Extraire
Nous pouvons utiliser zipinfo
dans le cadre de ce processus, c'est un programme de zip
package.
zipinfo -2 example.zip
affiche uniquement les noms des fichiers example.zip
, quelque chose ressemble à:
file1-long-name-...-bla-bla.html
file2-long-name-...-bla-bla.html
afin que nous puissions utiliser cette fonctionnalité pour extraire tous les fichiers:
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%.*}
: Supprime l'extension du nom de fichier long, donc si le nom de fichier est inférieur à 256 caractères; Nous n'allons pas obtenir une extension en double.
${long_fname:0:250}.${i##*.}
: Crée un nouveau nom de fichier avec un nombre légitime de caractères, ajoute également une .
extension réelle et un fichier.
Nous faisons simplement une boucle dans la liste des fichiers et extrayons chacun d'eux avec un nouveau nom de fichier légitime de 256 caractères.
Renommer
Vous pouvez utiliser la zipnote
commande, elle fait également partie du zip
package.
Obtenez d'abord une sauvegarde de votre fichier zip.
Exécutez cette commande:
zipnote example.zip > names
Noms ouverts à l'aide d'un éditeur, ça ressemble à ceci:
@ 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)
Ajoutez de nouveaux noms de fichiers comme celui-ci:
@ 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)
Ensuite, pour renommer les fichiers, utilisez:
zipnote -w example.zip < names
Vous les avez tous renommés, vous pouvez également écrire un script simple qui le fait automatiquement pour vous.
unzip -l <ARCHIVE>
et comment voulez-vous que les noms soient tronqués? Voulez-vous conserver la structure du répertoire à l'intérieur de l'archive pendant l'extraction?