Рейтинг:0

Как создать конфигурацию для вашего скрипта поиска и удаления

флаг cn

У меня есть сценарий, который выполняет следующую задачу: Поиск в каталоге файла с определенными критериями.

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

теперь я хотел бы создать файл конфигурации для этого скрипта, где вы можете указать расширение, время модификации или имя файла самостоятельно.

Я никогда раньше не создавал файл конфигурации и очень новичок в zsh, поэтому понятия не имею, как это сделать. проблема здесь в том, что мы должны работать, как этот файл для клиента.

флаг hr
Используете ли вы (или ваш клиент) `macosx`, как следует из вашего тега?
Mahmoud avatar
флаг cn
да и я и клиент пользуемся macosx
sudodus avatar
флаг jp
Какую версию Ubuntu и какую версию find вы используете?
Mahmoud avatar
флаг cn
В настоящее время я работаю над macos, используя iterm2. насчет версии find не знаю. хотя я знаю, что использую zsh 5.8, если это поможет.
sudodus avatar
флаг jp
Вы должны иметь возможность распечатать версию с помощью `find -version`. Я спрашиваю, потому что ваш синтаксис для `mtime` мне не подходит.
Mahmoud avatar
флаг cn
ввод ``fins -version`` приводит к ```find: недопустимая опция -- v использование: найти [-H | -Л | -P] [-EXdsx] [-f путь] путь ... [выражение] найти [-H | -Л | -P] [-EXdsx] -f путь [путь ...] [выражение]```
sudodus avatar
флаг jp
Я думаю, вам следует спросить на каком-нибудь веб-сайте о macos, потому что `find` работает иначе, чем здесь, в Ubuntu.
terdon avatar
флаг cn
Вы можете спросить на [unix.se] или [apple.se], но если вы это сделаете, уточните, почему вам нужен файл конфигурации. Это очень сложный и трудный в использовании подход.Почему бы просто не передать строку поиска в качестве аргумента или параметра при запуске скрипта? Использование конфигурационного файла просто усложняет жизнь всем (вам и вашим пользователям) без всякой пользы.
Mahmoud avatar
флаг cn
Я только что спросил на Ask Different. причина конфига в том, что это задача. при создании сценария я упомянул, что необязательно иметь сценарий для обеда из файла конфигурации. когда мы спросили, как мы можем это сделать, нам было поручено выяснить это самостоятельно (в качестве задачи), хотя мы не смогли получить результат, который мог бы дать нам представление о том, как это сделать. хотя я ценю время и усилия, помогая нам!
Рейтинг:0
флаг bz

Использование конфигурационного файла для этого скрипта подразумевает, что скрипт должен будет прочитать некоторый параметр из конфигурационного файла.

Файл конфигурации конфиг.txt:

путь=.
расширение = ш
модтайм=1
имя файла=тест

Файл сценария:

#!/бин/баш

строки=$(<config.txt) #читать config.txt

для строки в $lines; do # анализировать каждую строку и извлекать ключи значения параметра
  если [[ $line = *"="* ]]; затем # если слово содержит "="...
     vars[${line%%=*}]=${line#*=} # затем установите его как ключ ассоциативного массива
  фи
сделано
find ${vars[path]} -mtime ${vars[modtime]} -type f "(" -name "*.${vars[extension]}" -or -name "${vars[filename]}.* "")"

Другое решение — использовать скрипт с аргументами и указать путь, расширение, время модификации или имя файла следующим образом:

#!/бин/баш

помощь()
{
   эхо ""
   echo "Использование: $0 -p Путь -e Расширение файла -m Время модификации -f Имя файла"
   echo -e "\t-path Путь, где искать"
   echo -e "\t-ext расширение имени файла"
   echo -e "\t-modtime время модификации, например, +1d"
   echo -e "\t-filename имя файла"
   exit 1 # Выход из скрипта после печати справки
}

в то время как getopts "p:e:m:f:" opt
делать
   случай "$opt" в
      р) pathFile="$OPTARG" ;;
      д) расширение="$OPTARG" ;;
      м )modifyTime="$OPTARG" ;;
      е) имя_файла="$OPTARG" ;;
      ? ) помощь ;; # Вывести справку, если параметр не существует
   эсак
сделано

# Вывести справку, если параметры пусты
если [ -z "$pathFile" ] || [ -z "$расширение" ] || [ -z "$modifyTime" ] || [-z "$имя_файла" ]
тогда
   echo "Пустые параметры, проверьте их...";
   помощь
фи

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

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.