我有以下情况: - 我的Zip文件= abcd.zip 其内容: -
现在我要将此zip文件解压缩到文件夹a /,b /和c /中。 (Txt文件可以是大写或小写)
所以基本上我希望将文件解压缩到他们自己的指定目录中。
答案 0 :(得分:0)
for i in `ls -1 *.txt | sed 's/\.[a-z]*//g'`; do mkdir $i; mv $i.* $i/; done
答案 1 :(得分:0)
你可以尝试如下,
将此脚本放在与zip文件相同的目录中,并将zip文件的名称作为参数传递给脚本。
#!/usr/bin/ksh
name="$1"
list="$(unzip -l "${name}" | sed -n '/---/,/---/{ /----/d; p; }' | awk '{print $4}')"
for file in ${list}
do
dirnam=$(basename "${file}" ".txt")
mkdir -p "${dirnam}"
unzip "${name}" -d "${dirnam}" "${file}"
done
示例:
/home/abis> ./unzip.sh test.zip
Archive: test.zip
extracting: 1/1.txt
Archive: test.zip
extracting: 2/2.txt
Archive: test.zip
extracting: 3/3.txt
答案 2 :(得分:0)
如果全部是.txt:
zipinfo -1 abc.zip | while read line;do mkdir -p ${line%.txt}; unzip abc.zip $line -d ${line%.txt};done
对于任何扩展(考虑最后一个点之后的所有内容作为扩展名):
zipinfo -1 abc.zip | while read line;do mkdir -p ${line%.*}; unzip abc.zip $line -d ${line%.*};done
有关扩展名列表:
zipinfo -1 abc.zip | while read line;do mkdir -p ${line%.?(txt|jpg|gif)}; unzip abc.zip $line -d ${line%.?(txt|jpg|gif)};done
最后一个选项需要extglob,默认情况下禁用。因此,请运行shopt extglob
以查看它是打开还是关闭。 shopt -s extglob
启用它并shopt -u extglob
禁用。