如果我选择一个zip文件并右键单击“解压缩到此处”,则会创建一个名为zip文件名的文件夹,并将整个zip文件的内容提取到其中。
然而,我想通过shell转换多个zip文件。但是当我这样做时
unzip filename.zip
文件夹"filename"
没有被创建,但所有的文件都被提取到当前目录。
我已经查看了参数,但没有这样的参数。 我也尝试过。
for zipfile in \*.zip; do mkdir $zipfile; unzip $zipfile -d $zipfile/; done
但需要使用sed移除2. $zipfile和4. $zipfile的.zip
扩展名。
如果我这样做:
for zipfile in \*.zip; do mkdir sed 's/\.zip//i' $zipfile; unzip $zipfile -d sed 's/\.zip//i' $zipfile/; done
它不起作用。
我该如何正确地替换$zipfile
的.zip
扩展名?
除了使用shell脚本,是否有更简单的方法?
ls *.zip | awk -F'.zip' '{print "unzip \""$0"\" -d \""$1"\""}' | sh
。 - KurtPrestonls
输出进行任何操作。ls
是一个交互式查看目录元数据的工具。尝试使用代码解析ls
输出是错误的。通配符更简单且正确:for file in *.txt
。请阅读 http://mywiki.wooledge.org/ParsingLs。 - Rany Albeg Wein