FreeBSD – limitari argumente comanda rm

Duminica, ca de obicei, m-am apucat să fac un pic de curățenie pe serverele pe care le administrez.
Pe un server de mail aveam salvate pe disc în fișiere mail-urile marcate ca și spam și care nu au fost livrate în mailbox la utilizatori.
Cum aceste fișiere îmi ocupau spațiul degeaba, am zis să le sterg frumos cu:

rm –f spam-*

Aici am avut o supriză, sistemul mi-a răspuns la comandă cu următorul mesaj:

-su: /bin/rm: Argument list too long

Minunat. Să vedem câte fișiere al căror nume începe cu “spam-“ sunt de fapt în acest director:

ls -l | grep spam | wc -l
  103930

Hmm.. Prea multe pentru comanda rm.
O soluție ar fi fost să sterg întreg directorul, dar nu asta voiam. Ca să îmi rezolv problema am apelat la un artificiu, și anume execuția comenzii:

find . -name ‘spam-*’ | xargs rm

A funcționat de minune. O altă soluție ca să sterg toate fișierele din acest director, indiferent de numele lor ar fi fost:

ls | xargs rm

Câteva resurse care m-au ajutat:
Comanda find -  FreeBSD man page
Comanda rm – FreeBSD man page
Comanda xargs – FreeBSD man pages

Articole asemanatoare:

Postat în IT Etichetat cu: , , ,
One comment on “FreeBSD – limitari argumente comanda rm
  1. hello world spune:

    find . -name spam-* -exec rm -rf {} \;

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

*