我有一个包含.jpg,.png,.gif图像的zip档案目录.我想解压缩每个存档,只获取图像并将它们放在一个带有存档名称的文件夹中.
所以:
files/archive1.zip
files/archive2.zip
files/archive3.zip
files/archive4.zip
打开archive1.zip – take sunflower.jpg,rose_sun.gif.创建文件夹files / archive1 /并将图像添加到该文件夹,so files / archive1 / folder1.jpg,files / archive1 / rose_sun.gif.对每个存档执行此操作.
最佳答案
有点像:
#!/bin/bash
cd ~/basedir/files
for file in *.zip ; do
newfile=$(echo "${file}" | sed -e 's/^files.//' -e 's/.zip$//')
echo ":${newfile}:"
mkdir tmp
rm -rf "${newfile}"
mkdir "${newfile}"
cp "${newfile}.zip" tmp
cd tmp
unzip "${newfile}.zip"
find . -name '*.jpg' -exec cp {} "../${newfile}" ';'
find . -name '*.gif' -exec cp {} "../${newfile}" ';'
cd ..
rm -rf tmp
done
这是经过测试并将处理文件名中的空格(zip文件和提取的文件).如果zip文件在不同的目录中具有相同的文件名,则可能会发生冲突(如果要展平目录结构,则无法避免这种情况).