Portál AbcLinuxu, 12. května 2025 13:31
# 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.