Portál AbcLinuxu, 30. října 2025 17:08
# testovacie data mkdir a; sleep 1; mkdir b; sleep 1; mkdir c; sleep 1; touch d; sleep 1; touch najnovsi # zmaze okrem poslednej polozky, zo vsetkych priecinkov a suborov ls -t | tac | head -n -1 | xargs rm -R
ls -dt adresar/*/Zdar Max
vysledny=`basename $((cd ../; ls -dt test/*/)|head -n 1)`
ls má --sort=time a --reverse, takže ten tac netreba. Ale má ten problém, že vypíše aj súbory a nie len adresáre. Ak som dobre pochopil, tak sa majú mazať len adresáre. Riešením by mohol byť find -type d alebo loop a test -d. No a miesto toho head by sa dal použiť tail +2 ... podľa chuti.
#!/bin/bash
# TESTOVANIE - dalej 3 odseky dalej zakomentuj/zmaz, ak nechces testovat
# TESTOVANIE - pripravy priecinok na testovanie
rm -fR /dev/shm/test
mkdir /dev/shm/test
# presunie do precinku, v kt. maze
cd /dev/shm/test
# TESTOVANIE - vytvori testovacie subory
echo -n "vytvara testovacie subory "
mkdir a; sleep 1; touch b; sleep 1; mkdir c; sleep 1; mkdir zostat; sleep 1; touch d; sleep 1; touch e
echo " [ok]"
# posledny priecinok aj s casom
posl=`find -mindepth 1 -maxdepth 1 -path "./*" -type d -printf "%C+ %P\n" | sort | tail -n 1`
posledny="${posl:31}"
# mazem vsetky priecinky okrem posledneho
for p in `find -mindepth 1 -maxdepth 1 -path "./*" -type d`; do
if [ ! "$p" = "./$posledny" ];
then rm -R "$p";
fi
done
# TESTOVANIE - vysledna hlaska o ukoneceni
echo "zmazane, okrem posledneho priecinku"
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.