← Back to team overview

sslug-teknik team mailing list archive

Re: Slette filer baseret på størrelse

 

Egon Andersen <ean@xxxxxxxxx> writes:

> Men jeg kan ikke blot pipe dette over i 'rm', da denne ikke kan læse
> fra stdin
> Dvs. "find -size -200 | rm" virker altså ikke.

Du har allerede fået en løsning der virker nå dine data kommer fra
find, men ellers kan du se på programmet xargs. Den kan udføre en
kommando med argumenter den læser fra stdin.

For eksempel:

  find -size -200 | xargs rm

Vil kalde rm på alle filerne som find finder. Fordelen ved xargs er at
den kan kalde rm en gang med flere filer som argument. Lige i dette
tilfælde er forskellen ikke så stor.

Har du filnavne men mellemrumstegn i er ovenstående ikke så
smart. xargs vil nemling splitte stdin på blanktegn, dvs. både
mellemrum og ny-linjs. Så kan man få find til at adskille filnavne med
null-tegn istedet for linjeskift og få xargs til at splitte på dette:

  find -size -200 -print0 | xargs -0 rm

Jeg bruger stort set altid xargs istedet for -exec med find. Primært
fordi det ligger i fingrene, men det er også et mere generelt
værktøj. Jeg er også tit ude for at argumenterne kommer fra andre
steder end find og så er xargs løsningen.

-- 
 Peter Makholm     |        One thing you do is prevent good software from
 peter@xxxxxxxxxxx |      being written. Who can afford to do professional
 http://hacking.dk |                                     work for nothing?
                   |                                         -- Bill Gates


Follow ups

References