Puncte:0

Cum să creați o configurare pentru scriptul de căutare și ștergere

drapel cn

Am un script care face următoarea sarcină: Căutați într-un director un fișier cu criteriile determinate.

găsiți Documente/Fișiere/Fișiere jurnal/ -mtime +1d -type f '(' -name '*.log' -sau -name '*[0-9].*' ')' -delete

acum aș dori să creez un fișier de configurare pentru acest script, unde puteți detrimenta, extensia, timpul de modificare sau numele fișierului.

Nu am creat niciodată un fișier de configurare înainte și sunt foarte nou în zsh, așa că nu am idee cum să fac asta. Provocarea aici este că ar trebui să lucrăm deoarece acest fișier este pentru un client.

drapel hr
Folosești tu (sau clientul tău) `macosx` așa cum este implicat de eticheta ta?
Mahmoud avatar
drapel cn
da, atât eu cât și clientul folosim macosx
sudodus avatar
drapel jp
Ce versiune de Ubuntu și ce versiune de `find` rulați?
Mahmoud avatar
drapel cn
În prezent lucrez la un macos, folosind iterm2. cat despre versiunea find nu stiu. deși știu că rulez zsh 5.8 dacă asta ajută.
sudodus avatar
drapel jp
Ar trebui să puteți imprima versiunea cu `find -version`. Întreb pentru că sintaxa ta pentru `mtime` nu funcționează pentru mine.
Mahmoud avatar
drapel cn
tastând ```fins -version```rezultate pentru mine în ```fd: opțiune ilegală -- v utilizare: găsiți [-H | -L | -P] [-EXdsx] [-f cale] cale ... [expresie] găsiți [-H | -L | -P] [-EXdsx] -f cale [cale ...] [expresie]```
sudodus avatar
drapel jp
Cred că ar trebui să întrebați pe un site web pentru macos, deoarece `find` funcționează diferit de aici la Ubuntu.
terdon avatar
drapel cn
Puteți întreba pe [unix.se] sau [apple.se], dar dacă o faceți, vă rugăm să clarificați de ce doriți un fișier de configurare. Aceasta este o abordare foarte complicată și greu de utilizat.De ce să nu treceți pur și simplu șirul de căutare ca argument sau opțiune atunci când scriptul este lansat? Folosirea unui fișier de configurare face viața tuturor (a ta și a utilizatorilor tăi) mai grea fără niciun beneficiu.
Mahmoud avatar
drapel cn
Tocmai am întrebat la Ask Different. motivul pentru configurare este doar că este o sarcină. la crearea scriptului, am menționat că era opțional să aveți prânzul de script dintr-un fișier de configurare. după ce am întrebat cum am putea face asta, am fost însărcinați să ne dăm seama singuri (ca o provocare), deși nu am putut obține un rezultat care să ne dea un indiciu despre cum să o facem. deși apreciez timpul și efortul acordat pentru a ne ajuta!
Puncte:0
drapel bz

Pentru a utiliza un fișier de configurare pentru acest script, înseamnă că scriptul va trebui să citească un parametru dintr-un fișier de configurare.

Fișierul de configurare config.txt:

cale=.
extensie=sh
modtime=1
nume de fișier=test

Fișier script:

#!/bin/bash

linii=$(<config.txt) #citește config.txt

pentru linie în $linii; faceți # analizați fiecare linie și extrageți cheile param-valoare
  dacă [[ $line = *"="* ]]; atunci # dacă un cuvânt conține „="...
     vars[${line%%=*}]=${line#*=} # apoi setați-o ca o cheie de matrice asociativă
  fi
Terminat
găsiți ${vars[cale]} -mtime ${vars[modtime]} -type f "(" -name "*.${vars[extension]}" -sau -name "${vars[filename]}.* " ")"

Cealaltă soluție este să utilizați scriptul cu argumente și să specificați calea, extensia, timpul de modificare sau numele fișierului după cum urmează:

#!/bin/bash

Ajutor()
{
   ecou ""
   echo „Utilizare: $0 -p Calea -e Extensie fișier -m Timp de modificare -f NumeFișier”
   echo -e „\t-path Calea unde se caută”
   echo -e „\t-ext extensie nume de fișier”
   echo -e "\t-modtime timp de modificare, de exemplu +1d"
   echo -e „\t-filename nume fișier”
   exit 1 # Ieșiți din script după imprimarea ajutorului
}

în timp ce getopts „p:e:m:f:” opt
do
   cazul „$opt” în
      p ) pathFile="$OPTARG" ;;
      e ) extensie="$OPTARG" ;;
      m ) modifyTime="$OPTARG" ;;
      f ) fileName="$OPTARG" ;;
      ? ) Ajutor ;; # Imprimați ajutorul în cazul în care parametrul este inexistent
   esac
Terminat

# Tipăriți ajutorul în cazul în care parametrii sunt goli
dacă [ -z "$pathFile" ] || [ -z „$extensie” ] || [ -z „$modifyTime” ] || [ -z „$fileName” ]
atunci
   echo "Parametru(i) gol, vă rugăm să-i verificați...";
   Ajutor
fi

găsiți $pathFile -mtime $modifyTime -type f "(" -name "*.$extension" -sau -name "$fileName.*" ")"

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.