如何处理同一文件夹中包含同名文件的两个 zip 文件的提取

如何处理同一文件夹中包含同名文件的两个 zip 文件的提取

我正在使用for循环解压缩多个文件:

ls *.zip | for zipfile in *.zip;
do
    unzip "$zipfile"
done

如果在解压缩两个 zip 文件时,两个 zip 中有一个具有相同名称的文件,那么我想将这两个文件连接到同一文件夹中具有相同名称的单个文件。

怎么做?

答案1

假设存档中没有目录:

GLOBIGNORE=.:..
mkdir tmpdir1 tmpdir2 targetdir
unzip -d tmpdir1 "$zipfile1"
unzip -d tmpdir2 "$zipfile2"
cd tmpdir1
for file in *; do
    if [ -f "../tmpdir2/${file}" ]; then
        cat "$file" "../tmpdir2/${file}" >"../targetdir/${file}"
    else
        mv $file" "../targetdir/"
    fi
done
cd ../tmpdir2
mv * targetdir/

相关内容