[megoldva] Rengeteg fajl eltavolitasa (pattern-re)

Fórumok

Fajlrendszer: XFS
Kernel: 2.6.32.2 x86_64

Az eltavolitando fajlok rengeteg mappaban vannak (2k+). A meretuk 70gb korul van. Az eltavolitando fajlok szama kb 110k korul.

A fajlok altaban a pattern-el kezdodnek pl:

valami_fajl_neve_tag.xxx

De van hogy:
fvalami_fajl_neve_tag.xxx

Az f-est max kiegeszitem, lefuttatom ugyanugy.

Kivancsi lennek hogy ezt ki hogy oldana meg. KFind meg megtalalta a dolgokat, ki is szurte, de a jobb gomb utan a Delete/Trash az kamikaze akcionak tunik.

Koszonok elore is mindennemu segitseget.

Hozzászólások

ez profi. :D

Pl: for file in $(find . -type f|grep «pattern»); do rm $file; done ?

Nem ilyesmire gondoltam hanem MEGOLDASRA. Persze hintem/felmegoldasom nekem is van, de nem akarok barbarkodni. Olyan ember valaszat vartam/varom aki csinalt mar ilyent es van otlete hogyan kene nekiesni. (Az en modszeremben ott a bottleneck hogy a shell nem biztos elbirja.)

Ha while read-val adod át akkor nem fog előjönni (ksh alatt csináltam ilyet) az argumentum hossz probléma. De meg ez sem jó, mert elunod az életed az rm hívások alatt.
Az igazi megoldás, ha a find-nak a beépített törlését használod, mivel az syscall-ként kerül hívásra.

En ilyen esetekben ugy szoktam, hogy find . -type f -name "*valami_fajl_neve_tag.*"| awk '{printf "rm -rf %s\n",$1}' > kiakaromtorolni.sh.
Atnyalazom a kiakaromtorolni.sh-t, hogy csak az van-e benne, amit ki szeretnek torolni. Aztan sh ./kiakaromtorolni.sh.
A find . -type f -name "*valami_fajl_neve_tag.*" -exec rm -rf {} \; kicsit veszelyes , bar ha az rm -rf helyett ls -la-t használ az ember, akkor talan meg atnezheto, mit akarunk torolni.

Remelem ez volt a kerdes.

--
Joe

find <könyvtár> -name "akarmi.*" -print0 | xargs -0 rm -f

Ez nem fájlonként hívja meg az rm-et, hanem nagyobb adagokban.

Koszonom megegyszer mindenkinek.