0

私のスクリプト:

#!/bin/bash
NOW=$(date +"%Y%m%d%t%H%M%S")
# Pour chaque dossiers "log" trouvé.
for folder in $(find . -name "*log*" -type d )
    do :
        # Pour chaque dossier log contenant des fichiers ".log" vieux de +30jours.
            tar czf archive-log.$NOW.tar.gz $(find $folder -name "*.log" -mtime +30)
            # On supprime les anciens fichiers de log
            rm $(find $folder -name "*.log" -mtime +30)
    done

私の質問は次のとおりです。アーカイブするファイルがあるかどうかは、どのようなテストでわかりますか? どうも

4

1 に答える 1

1

アーカイブするファイルがない場合をスキップしたい場合は、次のことが役立ちます。

if [ ! -z $(find $folder -name "*.log" -mtime +30) ]
then
   tar czf archive-log.$NOW.tar.gz $(find $folder -name "*.log" -mtime +30)
   rm $(find $folder -name "*.log" -mtime +30)
else
   echo "there are no files to archive"
fi

構文if [ -z "string" ]は、文字列が空かどうかをチェックします。それを否定して、if [ ! -z $(find...) ]結果が結果を返すかどうかを確認します。

于 2013-09-17T15:41:50.390 に答える