民间,
我需要解压缩文件并将解压缩文件的子目录内容复制到不同的位置
例如:
文件名:temp.zip
解压缩temp.zip
我们在temp
下有这样的文件夹结构 temp/usr/data/keanu/*.pdf's
temp/usr/data/reaves/*.pdf's
我的要求是转到解压缩的文件夹并复制
/keanu *.pdf's to /desti1/
and
/reaves/*.pdf's to /dest2/
我试过以下内容:
unzip.sh <filename>
filename=$1
unzip $filename
//我已经卡在这里我需要去解压缩文件夹找到路径并将这些文件复制到不同的目的地
我的脚本上的UPDATE解压缩文件并递归复制推荐类型的文件到目标文件夹而不更改(通过保留目录结构)
文件名:unzip.sh
#! /bin/bash
#shopt -s nullglob globstar
filename="$1"
var1=$(sed 's/.\{4\}$//' <<< "$filename")
echo $var1
unzip "$filename"
cd "$(dirname "$filename")"/"$var1"/**/includes
#pwd
#use -udm in cpio to overwrite
find . -name '*.pdf' | cpio -pdm /tmp/test/includes
cd -
cd "$(dirname "$filename")"/"$var1"/**/global
#pwd
find . -name '*.pdf' | cpio -pdm /tmp/test/global
答案 0 :(得分:1)
如果zip的结构始终相同:
#! /bin/bash
shopt -s nullglob
filename="$1"
unzip "$filename"
cp "$(dirname "$filename")"/temp/usr/data/keanu/*.pdf /desti1/
cp "$(dirname "$filename")"/temp/usr/data/reaves/*.pdf /desti2/
如果结构发生变化,您只知道某处有keanu/
和reaves/
目录:
#! /bin/bash
shopt -s nullglob globstar
filename="$1"
unzip "$filename"
cp "$(dirname "$filename")"/**/keanu/*.pdf /desti1/
cp "$(dirname "$filename")"/**/reaves/*.pdf /desti2/
两个脚本都按照您的指定执行,但不超过此。解压缩的文件被复制,也就是说,脚本终止后原始的解压缩文件仍会存在。
答案 1 :(得分:1)
Python解决方案:
import zipfile,os
zf = zipfile.ZipFile("temp.zip")
for f in zf.namelist():
if not f.endswith("/"):
dest = "dest1" if os.path.basename(os.path.dirname(f))=="keanu" else "dest2"
zf.extract(f,path=os.path.join(dest,os.path.basename(f)))
"keanu"
,请选择目标1,否则选择其他