Ce ne facem cand avem de sters multe fisiere dintr-un dir?

consola LinuxPoate ca unii vor spune rm -rf nume_director

Eu am intalnit o situatie aparte: fisierele nu erau organizate in subdirectoare :). Poate unii stiti ca in kern elul de unix, fie el Linux sau FreeBSD exista o limita pentru numarul de argumente pe care le poate primi o comanda. Astfel rm -rf * se traduce prin rm -rf fisier1 fisier2 … Foarte OK. Pana cand numarul de fisiere depaseste maximul numarului de argumente ce poate fi dat unei comenzi. (Bineinteles ca as putea castiga un argument in plus daca as elimina “-rf”, dar evident asta e o gluma.)
Eroarea care ne loveste e: rm: Argument list too long. (error code: 126).

Eu am dat peste problema aceasta incercand sa sterg fisierele dintr-un inbox imap virtual, Maildir/.Trash/cur
Evident ca nici enumerarea directorului nu reuseste, asa ca thunderbird crapa :P.
Am gasit ca e timpul sa pun de un script. Si mi-am spus ca deoarece numele fisierelor e format din numere, as putea sa sterg recursiv pe grupe fisierele.
Iata scriptul:

#!/bin/bash

rec(){
for I in `seq 0 9 `; do
echo $1$I
rm -rf ./$1$I*
[ $? -eq 126 ] && rec $1$I
done
}

rec 1198
EOF

Autor:Sorin

4 Comentarii

  1. sorin a scris la: 30 March 2011 at 11:36 sorin

    Astept comentariile voastre pe tema asta si o solutie mai eficienta, daca se incumeta cineva. :)

    Reply

  2. istvan a scris la: 30 March 2011 at 12:26 istvan

    In viitor ar trebui sa scrii si parametrii comenzii, adica exemple prin care pot folosi scriptul si cei care nu stiu Bash

    Reply

  3. Marian a scris la: 6 September 2011 at 3:29

    Salut Sorin,

    Cred ca cel mai simplu este asa:

    for i in `find director/ -type f`;do rm -rf $i;done

    Reply

  4. Cetateanul turmentat a scris la: 24 February 2013 at 22:43

    find /dir/subdir | xargs -n100 rm -f

    apropo… cand incerci sa stergi foarte multe fisiere ( am sters odata 400 de milioane de fisiere ) o sa ai probleme cu hdd-ul ( freeze ) daca nu cumva ai ssd…

    Reply

Lasă un răspuns

(*)


*