我有多个zip文件,例如以下示例:
759198298412.zip
----i love you.pdf
----forever and one.txt
----today and tomorrow.docs
48891721241592__5123.zip
----whatever it is.pdf
5717273_616.zip
----igotit.txt
----thank you very much.mp3
我试图制作一个脚本来解压缩zip文件,然后将解压缩的文件重命名为zip文件名。像这样的输出:
759198298412.pdf
759198298412.txt
759198298412.docs
48891721241592__5123.pdf
5717273_616.txt
5717273_616mp3
我在下面找到了此脚本,但是它对我不起作用,因为我的文件有空间,并且zip文件中有多个文件。
for i in *.zip
do
n=$(unzip -lqq $i | awk '{print $NF}')
e=${n#*.}
unzip $i && mv $n ${i%%_*}".$e"
done
请帮忙!谢谢你
for i in *.zip; do
mkdir "$i-dir"
cd "$i-dir"
unzip "../$i"
for j in *; do
mv "$j" "$i.${j##*.}"
done
cd ..
done
如果在文件名的第一个下划线之后删除所有内容很重要,则mv行应该是:
mv "$j" "${i%%_*}.${j##*.}"
为了即使在zip文件名中不存在下划线的情况下也可以进行删除,请使用:
i=${i%.zip}; mv "$j" "${i%%_*}.${j##*.}"
并将文件全部保留../
在mv
目标文件名的顶级目录前缀中。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句