Portál AbcLinuxu, 15. července 2025 05:16


Dotaz: mazani souboru

17.3.2007 16:33 dik
mazani souboru
Přečteno: 442×
Odpovědět | Admin
Ahoj, mam adresar ve kterem je hrozne moc malych souboru. Jak mam v bashi smazat X souboru - mazano od nejstarsiho a jak Y Kb souboru - mazano od nejstarsiho (velikost smazanych souboru nemusi presne sedet na bajty). Diky za help.
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Fuky avatar 17.3.2007 16:59 Fuky | skóre: 52 | blog: 4u
Rozbalit Rozbalit vše Re: mazani souboru
Odpovědět | | Sbalit | Link | Blokovat | Admin

Smaže soubory větší než 1MB a starší než 60 dní, více viz. man find:
$ find -size +1M -atime +60 |xargs -i rm {}

-- RÁMO: psí tábor , ETriatlon: Výuka plavání
17.3.2007 22:07 Ash
Rozbalit Rozbalit vše Re: mazani souboru
Odpovědět | | Sbalit | Link | Blokovat | Admin

XXX=počet souborů

naivně:
ls -t | sort -n | head -n XXX | xargs rm

když budou problémy:
find . \( -type f -printf "%T@\t%p\n" \) | sort -n | tail -n XXX \
  | cut -f2- | tr '\n' '\0' | xargs -r0 rm
to s polepočtemkilobajtů resp. asi s počítáním počtu kb po mně nechtějte, to bude asi potřeba nějak zbastlit :)
18.3.2007 01:35 Marble | skóre: 27 | blog: marble
Rozbalit Rozbalit vše Re: mazani souboru
Tohle vypíše tolik nejstarších souborů z aktuálního adresáře a jeho podadresářů, aby jejich celková velikost byla menší než $size bytů:

size=200000 find . -type f -printf "%s %p\n" | awk 'BEGIN { sum=0; }; sum<'$size' { sum+=$1; if (sum<'$size') print gensub("^[0-9]+ ", "", "g", $0); }'

18.3.2007 10:24 Ash
Rozbalit Rozbalit vše Re: mazani souboru
Nejstarších?
18.3.2007 10:34 Marble | skóre: 27 | blog: marble
Rozbalit Rozbalit vše Re: mazani souboru
Nojo, no, tak ne. :) Detail ... :) Tož tam přidat tac, nebo tak něco.
18.3.2007 10:43 Marble | skóre: 27 | blog: marble
Rozbalit Rozbalit vše Re: mazani souboru
Aha, tak ještě ne. Pardon, já předtím chtěl napsat verzi s 'ls' místo find. Tož takhle:

# size=200000; find . -type f -printf "%T@ %s %p\n" | sort -n | awk 'BEGIN { sum=0; }; sum<'$size' { sum+=$2; if (sum<'$size') print gensub("^[0-9]+ [0-9]+ ", "", "g", $0); }'

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.