Puncte:0

Rulați o comandă împotriva mai multor directoare cu nume ușor diferite

drapel tr

Vreau să rulez o comandă pentru a șterge copiile de rezervă, astfel încât să pot reduce utilizarea discului. Nu sunt sigur cum, dar * reprezintă toate directoarele sub site-uri director

sudo rm -r site-uri/*/private/backups/*

Structura mea de director ar fi așa cum este prezentată mai jos:

ls site-uri 

site-uri/salut/privat/backup-uri/
site-uri/lume/privat/backup-uri/
sites/hello_world.txt

Asta nu merge

pLumo avatar
drapel in
„Acesta nu funcționează” nu este o descriere bună a erorii. Ce se întâmplă și ce te-ai aștepta să se întâmple?
Puncte:0
drapel it

NOTĂ: Aceasta presupune că utilizați convenția de adăugare a ~ sufix la copii de rezervă. Dacă folosiți altceva, trebuie să schimbați găsi argument în consecință. De exemplu, dacă utilizați, Dacă în loc de ceva de genul .bak, cel *~ ar trebui să fie în schimb .bak.

Incearca asta:

Prima alergare

sudo find /sites -type f -name '*~' 

și priviți prin rezultat. Dacă vă simțiți confortabil cu ștergerea fișierelor din listă, reintroduceți comanda, dar direcționați ieșirea către rm ca în

sudo find /sites -type f -name '*~' -print0 | xargs -0 /usr/bin/rm

Acest lucru va face ca shell-ul să se execute rm PATHNAME pe fiecare PATHNAME din listă.

The * caracter în bash este un caracter wildcard. Se va potrivi cu una sau mai multe cazuri de aproape orice caracter. Cea mai notabilă excepție de la această regulă este / caracter, motiv pentru care se potrivește doar cu un director la un moment dat în exemplul dvs. Utilizare ** pentru a potrivi orice număr de directoare dintr-un nume de cale.

EDITAȚI | ×:

Tocmai am observat că ați listat directorul ca site-uri/... si nu /site-uri/.... Trebuie să vă asigurați că a fost transmis primul parametru găsi este calea plină la director. În caz contrar, va returna doar o eroare.

EDITARE 2:

În timp ce reparam a doua comandă, mi-am dat seama că asta găsi el însuși poate face ceea ce face rm, dar fără a fi nevoie să efectueze apeluri suplimentare. Acest lucru ar trebui să funcționeze, dar tot nu aș sfătui să o faceți fără a rula mai întâi versiunea de top pentru a vedea exact ce va fi șters. Comanda este

sudo find /sites -type f -name '*~' -delete

Ca sfat final, dacă utilizați găsi multe și dacă aveți copii de siguranță ale sistemului, vedeți rezultatul dvs. depășit de duplicate. Dacă da, căutați -prună uscată opțiune. Va păstra orice se potrivește cu argumentul asociat din ieșire.

Nate T avatar
drapel it
@steeldriver thx... din nou. Mă gândeam că se citește din stdin când fără arg. Am verificat totul până acolo pe terminalul meu, doar pentru că nu am vrut ca cineva să-și ștergă sistemele de fișiere din contul meu. Acum m-aș dori să fi făcut un fișier fals sau două. Greseala mea. Repar acum. multumesc din nou.

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.