ในการสกัด
เราสามารถใช้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
แพ็คเกจด้วย
รับการสำรองไฟล์ 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>
และคุณต้องการให้ชื่อถูกตัดทอนอย่างไร คุณต้องการที่จะรักษาโครงสร้างไดเรกทอรีภายในเก็บในระหว่างการแยก?