如何为查找和删除脚本创建配置

如何为查找和删除脚本创建配置

我有一个执行以下任务的脚本:在目录中搜索符合确定条件的文件。

find Documents/Files/Logfiles/ -mtime +1d -type f '(' -name '*.log' -or -name '*[0-9].*' ')' -delete

现在我想为该脚本创建一个配置文件,您可以在其中自己修改扩展名、修改时间或文件名。

我以前从未创建过配置文件,而且对 zsh 还很陌生,所以我不知道该怎么做。这里的挑战是我们应该按照这个文件为客户端使用的方式工作。

答案1

要为此脚本使用配置文件,这意味着该脚本必须从配置文件中读取一些参数。

配置文件config.txt:

path=.
extension=sh
modtime=1
filename=test

脚本文件:

#!/bin/bash

lines=$(<config.txt)                 #read config.txt

for line in $lines; do               # parse each line and extract param-value keys
  if [[ $line = *"="* ]]; then       # if a word contains an "="...
     vars[${line%%=*}]=${line#*=}    # then set it as an associative-array key
  fi
done
find ${vars[path]} -mtime ${vars[modtime]} -type f "(" -name "*.${vars[extension]}" -or -name "${vars[filename]}.*" ")"

另一种解决方案是使用带有参数的脚本并指定路径、扩展名、修改时间或文件名,如下所示:

#!/bin/bash

help()
{
   echo ""
   echo "Usage: $0 -p Path -e fileExtension -m modificationTime -f fileName"
   echo -e "\t-path Path where to search for"
   echo -e "\t-ext file name extension"
   echo -e "\t-modtime modification time e.g. +1d "
   echo -e "\t-filename file name"
   exit 1 # Exit script after printing help
}

while getopts "p:e:m:f:" opt
do
   case "$opt" in
      p ) pathFile="$OPTARG" ;;
      e ) extension="$OPTARG" ;;
      m ) modifyTime="$OPTARG" ;;
      f ) fileName="$OPTARG" ;;
      ? ) help ;; # Print help in case parameter is non-existent
   esac
done

# Print help in case parameters are empty
if [ -z "$pathFile" ] || [ -z "$extension" ] || [ -z "$modifyTime" ] || [ -z "$fileName" ]
then
   echo "Empty parameter(s), please check them...";
   help
fi

find $pathFile -mtime $modifyTime -type f "(" -name "*.$extension" -or -name "$fileName.*" ")"

相关内容