Portál AbcLinuxu, 10. května 2025 09:49
ls * | sort | head -n-3 | xargs rm
cd ~/tmp || exit 1Mazání starých záloh (cd+rm) je typická cesta jak jednoho dne smazat něco v úplně jiném adresáři.
#!/bin/bash
cd ~/archiv || exit 1
# vyhledá všechny archivy ve složce a setřídí reverzně podle stáří (zobrazí jen prví 1,2,3 lines)
ls archiv* | sort -r | head --lines=3 > log/soubor1.lst
ls archiv* | sort -r | head --lines=2 > log/soubor2.lst
ls archiv* | sort -r | head --lines=1 > log/soubor3.lst
ls archiv* | sort -r > log/soubor.lst
# proměnné
soubor=log/soubor.lst
soubor1=log/soubor1.lst
soubor2=log/soubor2.lst
soubor3=log/soubor3.lst
# porovná soubory a pokud je splněna alespoň jedna z podmínek (existují 1 nebo 2 nebo 3 archivy) vypíše hlášku
if ( `cmp -s $soubor $soubor1` || `cmp -s $soubor $soubor2` || `cmp -s $soubor $soubor3` ); then
echo "tyto archivy jsou zachovány
`cat $soubor`
`date`"
else
# vyhledá všechny archivy seřadí podle stáří vypíše první a smaže ho
ls archiv* | sort | head --lines=1 | xargs rm -f
echo "nepotřebné archvívy vymazány"
# aby se akce opakovala dokud nezůstanou jen 1,2 nebo 3 archivy
~/archiv/script/./script2.sh
fi
Popisu si nevšímejte to jem dělal abych se v tom vyznal...
#!/bin/sh cd ~/archiv || exit 1 ls -tr archiv* | head -n -3 | xargs rm -fPokud tomu nevěříte tak si na to napište program který to za Vás vyzkouší:
#!/bin/sh pocatecni_soubory_od_nejstarsiho="archiv-q archiv-w archiv-e archiv-r archiv-t archiv-a archiv-s archiv-d" ocekavane_koncove_soubory_od_nejstarsiho="archiv-a archiv-s archiv-d" # vytvoreni pocatecniho stavu rm -f archiv* for soubor in $pocatecni_soubory_od_nejstarsiho; do touch $soubor sleep 2 done # testovana funkce - smazani ls -tr archiv* | head -n -3 | xargs rm -f # porovnani ocekavaneho vysledku s realitou realne_koncove_soubory=`ls -tr archiv*` if [[ "$realne_koncove_soubory" = "$ocekavane_koncove_soubory_od_nejstarsiho" ]]; then echo mazani funguje jak ma else echo mazani nefunguje echo ocekavano: echo "$ocekavane_koncove_soubory_od_nejstarsiho" echo realita: echo "$realne_koncove_soubory" fi
napsat si program který to za mě vyzkouší by byla paráda ale problém je že to bych už nevymyslel.Není to zas takový nápor na mozek - stačí 1) napsat konkrétní příklad stavu "před" a "po" a 2) porovnat to s tím, co dělá ten program.
Už s tímhle jsem se páral cca 8 hodin :)Poprvé to vždycky dře, ale pak to jde samo.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.