Ce facem cand avem de sters mai multe fisiere dintr-un director in Linux

Configurare noua (How To)

Situatie

Poate 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. Totul in regula, 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 este o gluma.)
Eroarea care apare acum este: 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 se defecteaza.
Am gasit ca e timpul sa realizez un script. Si mi-am spus ca, in conditiile in care numele fisierelor e format din numere, as putea sa sterg recursiv, pe grupe, fisierele.

Solutie

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

Tip solutie

Permanent

Voteaza

(15 din 29 persoane apreciaza acest articol)

Despre Autor

Leave A Comment?