fredag 26 september 2008

Ta bort många filer med find och rm

Jag hade en massa db filer i min musik mapp och Bild mapp som jag hade fått på köpet när jag flyttade mina filer från Windows till Ubuntu och på det här sättet var det enkelt att bli av med dom. Jag gick in i Musik mappen och körde detta kommando (jag har satt dit XX för det är inte bra att köra detta kommando på alla filer för då kan nåt viktigt försvinna... Se till att du vet vad du gör innan rm (remove) kommandot körs. När man kör med kommandot som slutar på less så visas filerna och kör man nästa kommando så tas de filerna som visades bort om du står kvar i samma mapp...

Kör alltså detta kommando för att se vilka filer du kommer att tar bort... den söker i alla undermappar med utgångspunkt den du är i. -print0 separerar filer med ett specialtecken i stället för ett mellanslag och gör så att inte mellanslag i namnen ställer till det. -0 är en nolla och gör så att inte mellanslag i namnen ställer till det för xargs, xargs bryter vid ett specialtecken i stället.
find -iname '*.XX' -print0 | xargs -0
När du är säker på att alla filer som du just sett ska tas bort så kör du detta kommando. Kom bara ihåg att byta ut *.XX mot samma som du hade i den förra sökningen :)
-p gör så att man frågas innan man kör kommandot rm -f och visar på vilka filer som komandot kommer att köras. -p behövs inte utan är bara en extra säkerhetsgrej så att man har en sista chans på sig att ändra sig.... -f ignorerar icke existerande filer och frågar aldrig om nåt ska tas bort.
find -iname '*.XX' -print0 | xargs -0 -p rm -f


Alternativt kan man sätta in hela sökvägen. Om du har Bilder mappen som en länk i stället för som en "riktig mapp" så måste du använda -L.
find -L /home/användarnamn/Bilder -iname '*.XX' -print0 | xargs -0
och
find -L /home/användarnamn/Bilder -iname '*.XX' -print0 | xargs -0 -p rm -f

Inga kommentarer: