所以我有一个相当简单但编写得非常糟糕的脚本来递归搜索目录,将其中的 .zip 提取到它们所在的文件夹中,并对提取的文件进行基本的错误检查和清理。作为记录,我完全没有能力通过创建一个文件作为标志来从 while read 管道结构中获取信息的业务很好地说明了这一点。老实说,它从第一次尝试就很快就想到了它,并且实际上并没有留下文件混乱,所以我就不管它了。我真的没有编写脚本的经验,而且除了玩弄 C++ 之外,一般情况下也没有太多经验,但我正在努力了解如何编写 shell 脚本以达到实际目的。问题是,即使我可以看到我如何做到这一点也没有什么优雅的,
我可以看到 unzip 每个文件至少被调用了几次,但与其说是大量 .zip 的问题,不如说是大量包含大量文件的文件夹。在清理这个方面我是否遗漏了一些简单的事情,或者我只是遇到了文件系统的现实(此时,在 Windows 上使用搜索和提取半手动执行此过程比在linux*)? 更好的选择是接受这将花费大量时间,使其在后台运行并将所有输出转储到日志中吗?
无论如何,如果您想深入了解,我的解压缩脚本的完整代码如下。
echo "" >> unzipr.log
echo "----" >> unzipr.log
echo " " >> unzipr.log
find . -name "*.zip" | while read filename; do
dir=$(dirname $filename)
unzip -nqq "$filename" -d "$dir"
if [[ $? == 0 ]] ; then
rm $filename
echo "$filename succesfully extracted"
else
#unzip -t "$filename"
echo "Error in $filename"
echo $filename >> unzipr.log
failed=true
echo >> unzipr.fail
fi ;
done
if [ -e unzipr.fail ] ; then
echo "EXTRACTION ERRRORS DETECTED"
rm unzipr.fail
exit 1
else
echo "Extraction successful"
exit 0
fi
*我突然想到,我正在利用 Windows 搜索索引这些搜索...我可能不得不回到这里的绘图板,不知道如何首先用 Linux 做一些等效的事情,让自动单独。