shell bash 脚本示例:首先查找最早的 zip 文件并执行它

shell bash 脚本示例:首先查找最早的 zip 文件并执行它

有人可以帮助我吗?我有一个目录,其中有时只有一个 zip 文件,有时有更多 zip 文件。如果是一个 zip 文件,则必须执行(解压缩),如果有多个 zip 文件,则需要按最旧的第一个文件的顺序执行文件。有人能给我举个例子吗

我已经有一个脚本,但它仅在只有一个 zip 文件时才有效,如果地图中有更多 zip 文件,则该脚本将无法工作。

#!/usr/bin/env bash
MAGEPATH=/var/www/vhosts/httpdocs/bin/
BASEDIR=$(dirname $0)
cd $BASEDIR

file=*.ZIP
  if [ -f $file ]
    then
      echo $file "exist"
        cp $file ./backup
    unzip $file
    rm -f $file
   fi
   if [ -f *BASIC.XML ]
    then
    mv *_BASIC.XML BASIC.XML
   fi
   if [ -f *PRICES.XML ]
        then
        mv *_PRICES.XML PRICES.XML
   fi
   if [ -f *STOCKINFO.XML ]
        then
        mv *_STOCKINFO.XML STOCKINFO.XML
   fi
   if [ -f *STOCKINFOU.XML ]
        then
        mv *_STOCKINFOU.XML STOCKINFO.XML
   fi
    mv BASIC.XML BASIC_$(date +\%F-\%H-\%M).XML
    mv PRICES.XML PRICES_$(date +\%F-\%H-\%M).XML
    mv STOCKINFO.XML STOCKINFO_$(date +\%F-\%H-\%M).XML
    cp -f *.XML ./backup
    rm -f *.XML

答案1

#!/bin/bash
cl=$(find <path> -type f -iname "*.zip"|wc -l )
if [ $cl -eq 1 ]
then
echo "Only one zip file present and we unzipping it"
find <path> -type f -iname "*.zip" -exec unzip {} \;
elif [ $cl -gt 1 ]
then
for g in $(ls -lt <path>/*.zip | awk 'END{print $NF}')
do
echo "More one zip file exsists and we are Unzipping the oldest zip file"
unzip  $g -d <destinationpath>
done
fi

相关内容