Puncte:2

Ștergeți fișierele care nu se potrivesc cu modelul folosind xargs

drapel dk

Următoarea comandă este de la https://www.tecmint.com/xargs-command-examples/ exemplul #9. Este pentru a șterge fișierele care nu se potrivesc cu *gz din directorul curent.

$ găsiți. -tip f -nu -nume '*gz' -print0 | xargs -0 -I {} rm -v {}

Care sunt scopul -print0 arg de găsi comanda si -0 și -Eu {} argumente ale xargs comanda? De ce sunt necesare? Mulțumiri!

Puncte:4
drapel hr

-print0 spune găsi pentru a scoate rezultatele separate prin octeți nuli în loc de caracterele obișnuite de tip newline. Acest lucru este necesar dacă numele fișierelor conțin (sau pot în viitor) să conțină caractere newline.

Atunci trebuie să spui xargs să vă așteptați la date delimitate de valori nule care coboară pe conductă - asta este -0 este pentru. Deci este necesar aici când se utilizează -print0 pe LHS.

Între timp {} este un șir de înlocuire - atunci când utilizați -Eu {}, fiecare {} în următoarea comandă va fi înlocuită cu un element de intrare. Este cu adevărat necesar doar atunci când aveți nevoie de control asupra locului în care apare elementul în următoarea linie de comandă (și are efectul secundar de a rula o singură invocare pentru fiecare articol, echivalent cu adăugarea -L 1). IMHO, nu este necesar aici și face ca soluția să fie ineficientă, deoarece rulează rm o dată pentru fiecare fișier găsit, în loc să fie în loturi.

Rețineți că găsi are o -exec opțiune și a -șterge opțiune prin care ambele evită problema scrierii / citirii datelor delimitate cu totul:

găsi . -type f -not -name '*gz' -exec rm -v {} +

sau

găsi . -type f -not -name '*gz' -print -delete

(cel -imprimare aici pentru a oferi o funcționalitate similară ca -v opțiunea pentru rm).

Raffa avatar
drapel jp
+1 ... `xargs -0` este, de asemenea, `xargs --null`
drapel hr
@Raffa este adevărat, iar `-nu`` al lui find este, de asemenea, (mai portabil) `!` - Eu sunt întotdeauna ezitând să supraîncărc răspunsurile cu TMI...

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.