我正在编写一个 shell 脚本来解压缩目录中的文件。不同的zip文件中存在同名文件;代码必须保留较大的代码。
我需要解压缩 /test 目录中的文件。有数千个 zip 文件,我没有空间同时解压缩它们。因此,我创建了一个文件夹 /test/tmp 并将一个 zip 文件解压缩到该文件夹中。然后比较 /test 和 /test/tmp 文件夹中的文件。如果有重复文件,比较它们的大小并将较大的文件保留在 /test 中。如果没有重复,请将文件从 /test/tmp 移动到 /tmp。
这是我的代码:
#!/bin/bash
A="/test"
B="/test/tmp"
archives=$(ls $A *.zip 2>/dev/null)
for archive in "${archives}"
do
mkdir -p "${B}" && unzip "${archive}" -d $B
for file_tmp in 'ls $B *.log 2>/dev/null'
do
file_root="${A}${file_tmp}"
if [-f "${file_root}"] then
if [[$(stat -c %s "${file_tmp}") -ge $(stat -c %s "${file_root}")]]
then mv "${file_tmp}" "${file_root}"
else rm "${file_tmp}"
fi
else mv "${file_tmp}" $A
fi
done
done
但我不断收到错误
unziptest.sh: line 16: syntax error near unexpected token `else'
unziptest.sh: line 16: ` else mv "${file_tmp}" $A'
怎么了?