Puncte:1

Căutarea și ștergerea fișierelor cu o anumită extensie sau care se termină cu un număr

drapel cn

Aș dori ca scriptul meu să găsească un anumit tip de fișier și să-l ștergă.

Știu că găsește calea/către/director/ -type f -name '*.ext' -delete va găsi și șterge toate fișierele cu extensia.

Acum aș dori, de asemenea, ca scriptul meu să elimine orice fișier care se termină cu un număr, indiferent de extensie, precum și fișierele care se termină cu extensia.

Am încercat următoarele comenzi fără succes:

găsi calea/către/director/ -type f -nume „*.ext” -nume „*[0-9].* -șterge
găsește calea/către/director/ -type f -name '*.ext' '*[0-9].* -delete
găsiți calea/către/director/ -type f -name '*.ext,*[0-9].* -delete

Niciuna dintre acestea nu a funcționat, nu sunt sigur ce anume trebuie să schimb sau ce fac greșit.

Puncte:1
drapel hr

eliminați fișierele care se termină cu extensia, precum și orice fișier care se termină cu un număr, indiferent de extensie

Acest lucru necesită condiții unite prin OR logic în loc de ȘI logic implicit (parantezele sunt necesare deoarece OR are o prioritate mai mică decât ȘI și trebuie să fie evadate sau citate, astfel încât shell-ul să le transmită la găsi ca literali):

găsiți calea/către/director/ -type f \( -name '*.ext' -o -name '*[0-9].*' \) -print

Schimbare -imprimare la -șterge odată ce ești sigur că face ceea ce trebuie. În implementarea GNU a găsi, puteți folosi -sau in locul -o daca preferi.

Mahmoud avatar
drapel cn
mulțumesc pentru răspunsul rapid, sunt destul de nou în scripting, presupun că -o înseamnă „sau”, dar de ce am nevoie de \ în asta?
drapel hr
@Mahmoud parantezele trebuie să fie scapă `\(` sau ghilimele `'('`, astfel încât shell-ul să le transmită la `găsește` ca literale
Mahmoud avatar
drapel cn
așa că aș putea scrie acest ```\( -name '*.ext' -o -name '*[0-9].*' \)``` așa în loc ```'( -name '*.ext ' -o -name '*[0-9].*' )'``` corect?
drapel hr
@Mahmoud nu, fiecare individ `(` sau `)` trebuie citat ca un simbol separat `'(' -name '*.ext' -o -name '*[0-9].*' ')'`

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.