![쉘 bash 스크립트 예: 먼저 가장 오래된 zip 파일을 찾아 실행합니다.](https://linux55.com/image/208672/%EC%89%98%20bash%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%20%EC%98%88%3A%20%EB%A8%BC%EC%A0%80%20%EA%B0%80%EC%9E%A5%20%EC%98%A4%EB%9E%98%EB%90%9C%20zip%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EC%B0%BE%EC%95%84%20%EC%8B%A4%ED%96%89%ED%95%A9%EB%8B%88%EB%8B%A4..png)
누구든지 나를 도와줄 수 있나요? 때로는 하나의 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